我正在寻找一个单行命令或脚本,将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 dir比tar -c dir > dir.tar更简洁一些
示例脚本:
#!/bin/sh DIR=$1 tar -cf $DIR.tar $DIR/ if [ $? -eq 0 ]; then rm -rf $DIR fi
你可以把它放到script.sh , chmod 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