如何将多个文件(在另一个文件中列出)tar到不同目录中的各自tar?

时间:2017-04-18 12:42:14

标签: linux bash archive

我有以下文件夹结构:

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文件。有什么帮助吗?

2 个答案:

答案 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存档的文件列表。