如何在一行 bash 中查找一堆文件并将其存档

如何在一行 bash 中查找一堆文件并将其存档

假设我想查找当前目录下所有以 .wzd 为后缀的文件,并将一次性找到的所有文件归档,我该怎么做?

顺便说一句,下面的方法不起作用

find . -name "*.wzd" 2>/dev/null -exec tar -cvf wzd.tar {} \;

答案1

使用-print0withfind输出以空字符分隔的文件名,并通过管道传输到tarusing-T - --null从 stdin 读取以空字符分隔的文件名。

find ... -print0 | tar ... -T - --null

答案2

反引号也可以工作:

tar -cvf wzd.tar `find . name "*.wzd" -printf "%f "`

答案3

-exec command {} +

-exec操作变体对选定的文件运行指定的命令,但命令行是通过在末尾附加每个选定文件名来构建的;命令的总调用次数将远少于匹配的文件数。命令行的构建方式与xargs构建其命令行的方式大致相同。'{}'命令中只允许一个实例。命令在起始目录中执行。

相关内容