2015-10-06 139 views
0

我想写一个脚本,它需要两个参数 1.父目录的名称(例如mainFolder) 2. tar的名字要创建脚本创建一个父目录的tar,它的子目录中有个别的tar目录

父目录将有子文件夹(folder1,folder2,folder3等)。 我需要一个脚本,这将创造“mainFolder.tar”,这将包括“folder1.tar”,“folder2.tar”,“folder3.tar” ......等......

tar cvf mainFolder.jar mainFolder 

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

同时创造焦油,只有父文件夹“mainFolder”里面的“目录”,应考虑tar..and没有名为“.txt”文件..

+1

我更新了我的答案,以反映您指出的目录子句。希望它足以满足您的需求。 – 2015-10-08 13:56:11

回答

1

这里是一个POSI X符合您的问题的解决方案。可能有一种更简单的方法(不使用任何临时文件),但它会涉及到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 
+0

如何排除文件的某些时间,如“* .txt”或“* .confg”....总之,我怎样才能使其工作只为目录? – Priyanka

+1

已编辑,以便仅存档目录。 – 2015-10-08 13:46:35

+0

还有一个要求是,目录以外的文件应该被复制到最终的存档中。 – Priyanka