如何将 find 命令的输出移动到另一个目录?

Fas*_*oth 6 command-line find mv

我希望此命令的输出find /home -name *.pdf 将搜索结果中的文件移动到另一个目录,例如使用管道。我怎样才能做到这一点?

hee*_*ayl 15

您不需要任何管道,并将xargs文件名作为mv.

只需mv在以下-exec操作中使用find

find /home -type f -name '*.pdf' -exec mv -t /destination {} + 
Run Code Online (Sandbox Code Playgroud)
  • 替换/destination为实际的目标目录
  • find 将处理所有可能的文件名
  • findARG_MAX通过一次性传递尽可能多的文件名来处理,这样就不会触发ARG_MAX
  • 如果您只查找文件(大概在这种情况下),请通过添加来限制搜索向量 -type f
  • 引用 glob 扩展, '*.pdf', 这样 shell 就不会像find处理它们那样事先扩展它们

如果出于某种奇怪的原因,或出于学习目的,您必须使用 pipe- xargs

find /home -type f -name '*.pdf' -print0 | xargs -0 mv -t /destination  
Run Code Online (Sandbox Code Playgroud)