我希望此命令的输出find /home -name *.pdf
将搜索结果中的文件移动到另一个目录,例如使用管道。我该怎么做?
答案1
您不需要任何管道,也xargs
可以将文件名作为 的参数mv
。
mv
只需在以下-exec
操作中使用find
:
find /home -type f -name '*.pdf' -exec mv -t /destination {} +
- 替换
/destination
为实际目标目录 find
将处理所有可能的文件名find
ARG_MAX
将通过一次传递尽可能多的文件名来处理,这样就不会触发ARG_MAX
- 如果你只查找文件(大概在这种情况下),通过添加来限制搜索向量
-type f
- 引用 glob 扩展,
'*.pdf'
以便 shell 不会事先扩展它们,而是find
处理它们
如果由于某些奇怪的原因,或者出于学习目的,您必须使用 pipe- xargs
:
find /home -type f -name '*.pdf' -print0 | xargs -0 mv -t /destination
答案2
如果您的 pdf 名称中没有空格,另一种方法是在终端中运行此命令:
mv $(find /home -type f -name '*.pdf') ./destination
$()
将命令运行的输出 ( )应用于find /home -type f -name '*.pdf'
其外部的命令 ( mv [...] ./destination
)。