我正在尝试完成一个小 bash 项目,但在尝试 tar 给定路径的文件夹时卡住了。例如,程序接收路线/home/folderx
。然后,它使用循环查找该目录内的每个文件夹for i in ~/folderx/*; do...
。问题是:我尝试使用 来压缩该路径内的每个文件夹tar -czvf $i.tgz $i -P
,但它压缩了提供给程序的整个路径。最后,我获得了一个.tgz
具有正确名称的文件(我想要压缩的目录的名称),但其中不/home/folderx/name_of_the_folder/contents
只是name_of_the_folder
内容。
有什么问题?非常感谢。
答案1
您需要位于需要执行 tar 操作的目录中。
在for i in ~/folderx/*; do...
循环中做
cd $i
tar -czvf $i.tgz . -P
cd -
这对我有用。
答案2
首先创建存档文件,然后运行命令。
例如:
destination__folder = "name_of_folder.tgz"
tar czvf $path/to/destination_folder $i
上面的示例$i
是您已在脚本中使用的示例。