我有用于查找特定类型文件并将它们压缩到单个 tar 存档并放入其他位置的脚本。但是现在,需求发生了变化,我需要找到某种类型的文件,将其列出并将它们中的每一个压缩到一个 tar 存档并将其放到其他地方。目前我正在使用脚本
cd /to/top/of/dir/structure
tar -cf /path/to/tarfile.tar --files-from /dev/null # trick to create empty tar file
find . -type f ! -name '*.log' -print0 | xargs -0 tar -uvf /path/to/tarfile.tar
我从这篇文章中获取的内容:https ://superuser.com/questions/436441/copy-every-file-with-a-certain-extension-recursive
因此,上面的脚本找到特定的文件类型,然后将其归档为单个 tar 文件,然后将其放置到另一个位置。但我的问题是,我需要找到某种类型的文件,列出它们,对每个列出的文件进行压缩并将它们放到其他位置。
我要和...
......但我还没有测试过。
而且我真的很怀疑这将是你真正需要的......
编辑
我能得到它,只要...
...输出您要运行的命令。
我仍在努力执行这些命令,除了
-fprint
ing 到临时文件,chmod +x
然后执行那个.更不用说处理在文件名中转义笨拙字符的任何问题。
编辑#2
好的,我无法将其简化为一行(这是我的挑战,而不是您的挑战),但我可以将其放入一个相当简单的脚本中:
在没有管道(或 xargs)的情况下,创建多个 tar 文件而不是一个文件,并删除未压缩的文件,您可以按照以下方法进行操作:
找到文件并建立一个列表,告诉 tar 从列表中制作一个存档....
旁注:您的示例不会压缩文件,它只是将其存档。
寻找 。-type f ( -name " .php " -o -name " .js" -o -name " .css" -o -name " .crt" -o -name " .htm*" -o -name " .txt " -o -name " .$" -o -name " .xml" -o -name ".ht " ) -print0 | tar -czpf $FILE --null -T -