脚本创建父目录的tar,该目录将包含其子目录的各个tar

时间:2015-10-06 14:12:33

标签: linux bash shell unix

我想编写一个带有两个参数的脚本 1.父目录的名称(例如mainFolder) 2.要创建的tar的名称

父目录将包含子目录(folder1,folder2,folder3等)。 我需要一个脚本来创建“mainFolder.tar”,它将包含“folder1.tar”,“folder2.tar”,“folder3.tar”......等等......

tar cvf mainFolder.jar mainFolder

这将直接创建父级的tar“mainFolder”...任何人都可以告诉我如何使mainFolder.tar创建&包含其子目录的tar ...需要一个Shell脚本(例如createTar.sh)来做它..

在创建tar时,只应将父文件夹“mainFolder”中的“目录”考虑为tar ...而不是“.txt”文件..

1 个答案:

答案 0 :(得分:1)

这是针对您的问题的POSIX兼容解决方案。可能有一种更简单的方法(不使用任何临时文件)但它会涉及到tar的特殊且可能是非可移植的参数。

#!/bin/sh


startdir="$(pwd)"

mkdir -p parent/horse/frog parent/dog/frog parent/fish/frog

mkdir newparent

(
    cd parent

    for i in *
    do if [ -d "$i" ] 
       then tar -cf "$startdir/newparent/${i}.tar" ${i}
       fi
       if [ -f "$i" ] 
       then cp "$i" "$startdir/newparent/"
       fi
    done
)

tar -cf newparent.tar newparent