我需要将多个文件压缩成一个tar文件。由于我需要为许多不同文件夹中的许多文件重复此操作,因此我编写了一个Shell脚本并从父目录启动它。该Shell脚本包含多行类似以下内容的代码:
tar -cf a/b/c/tarfile.tar a/b/c/*
这样会在指定的文件夹中创建一个tar文件,但是在tar文件内部,a/b/c/文件夹结构仍然存在。
我希望所有c/文件中的文件都被放置在tarfile.tar中,而不带有a/b/c/文件夹结构。这是否可能?
我需要将多个文件压缩成一个tar文件。由于我需要为许多不同文件夹中的许多文件重复此操作,因此我编写了一个Shell脚本并从父目录启动它。该Shell脚本包含多行类似以下内容的代码:
tar -cf a/b/c/tarfile.tar a/b/c/*
这样会在指定的文件夹中创建一个tar文件,但是在tar文件内部,a/b/c/文件夹结构仍然存在。
我希望所有c/文件中的文件都被放置在tarfile.tar中,而不带有a/b/c/文件夹结构。这是否可能?
tar -cf a/b/c/tarfile.tar -C a/b/c .
将切换到目录a/b/c
并读取整个目录(使用.
表示,也可以指定特定的文件,但通配符不会达到你的预期效果)。-C <directory> <filelist>
模式可以重复使用以处理来自不同位置的其他文件。
根据您提供的示例,另一个可能性是cd a/b/c; tar cf ../../../tarfile.tar *
,但这不允许您从不同位置获取多个文件(当然,您仍然可以使用-C
,但相对路径必须相应调整)。