单行命令/脚本来归档一定数量的文件夹

我正在寻找一个单行命令或脚本,将5个文件夹归档到某个目录下的.tar文件(不需要gzip / bzip),并在压缩成功后删除文件夹。 它也必须使用原始文件夹名称作为档案的文件名。

到目前为止,我已经使用了当前的命令,每次只有一个目录:

tar -c directory > directory.tar && rm -rf directory 

提前致谢。

这将处理作为parameter passing给脚本的目录下的前五个目录。

 #!/bin/bash c=1 for directory in $1/* do if [[ -d "$directory" ]] then tar -cf "${directory}.tar" "$directory" && rm -rf "$directory" if (( c++ > 5 )) then break fi fi done 

我很好奇这个限制的原因。

这有点冗长,但是:

 for i in dir1 dir2 dir3; do tar -cf $i.tar $i; if [ $? -eq 0 ]; then rm -rf $i; fi; done 

编辑; tar -cf dir.tar dirtar -c dir > dir.tar更简洁一些

示例脚本:

 #!/bin/sh DIR=$1 tar -cf $DIR.tar $DIR/ if [ $? -eq 0 ]; then rm -rf $DIR fi 

你可以把它放到script.shchmod 755 script.sh ,然后像script.sh directory运行它

然而,你可以添加更多,从主目录中获取目录列表,甚至使用一个文件来跟踪最后一次存档directory ,所以你可以设置最大值等。

 for dir in dir1 dir2 dir3 dir4 dir5 ; do tar -c "$dir" > "$dir".tar && rm -rf "$dir" ; done