我有以下文件夹结构:
parent/subdir/dir1
parent/subdir/dir2
parent/subdir/dir3
parent/subdir/dir4
我想创建以下内容:
parent/archive/dir1.tgz
parent/archive/dir2.tgz
parent/archive/dir3.tgz
parent/archive/dir4.tgz
文件<dir#>
列在名为foo.txt
的文件中,该文件位于parent/
我想创建一个shell脚本,它将从foo.txt
读取每个目录,将它们压缩到新位置,然后删除原始目录。我不希望foo.txt
中的所有目录都成为一个大的.tgz文件。有什么帮助吗?
答案 0 :(得分:1)
请查看此脚本是否符合您的要求。该脚本有两个参数。第一个参数是包含目录位置的文件( foo.txt ),第二个参数是保存tgz文件的位置(父/存档)。
#!/bin/bash
while IFS='' read -r line || [[ -n "$line" ]]; do
cd "$2";
echo -e "Archiving $line";
tarName="$(basename "$line").tgz";
tar -zcvf "$tarName" "$line";
rm -Rf "$line";
echo -e "Archived $line to $2/$tarName and removed $line";
done < "$1"
答案 1 :(得分:0)
使用tar -T标志指定一个文件,该文件包含用于创建tar存档的文件列表。