假设我想查找当前目录下所有以 .wzd 为后缀的文件,并将一次性找到的所有文件归档,我该怎么做?
顺便说一句,下面的方法不起作用
find . -name "*.wzd" 2>/dev/null -exec tar -cvf wzd.tar {} \;
答案1
使用-print0
withfind
输出以空字符分隔的文件名,并通过管道传输到tar
using-T - --null
从 stdin 读取以空字符分隔的文件名。
find ... -print0 | tar ... -T - --null
答案2
反引号也可以工作:
tar -cvf wzd.tar `find . name "*.wzd" -printf "%f "`
答案3
-exec command {} +
此-exec
操作变体对选定的文件运行指定的命令,但命令行是通过在末尾附加每个选定文件名来构建的;命令的总调用次数将远少于匹配的文件数。命令行的构建方式与xargs
构建其命令行的方式大致相同。'{}'
命令中只允许一个实例。命令在起始目录中执行。