如何使用“mv”收集“find”在同一个文件夹中找到的所有文件?

如何使用“mv”收集“find”在同一个文件夹中找到的所有文件?

我可以找到我想要的所有文件,find无论使用什么方式,我都mv可以将它们全部移动到某个文件夹。我该怎么做?

答案1

稍微有点偏差,cp两者mv都支持-t目标参数,让你从目的地开始,以一长串要复制或移动的内容结束命令。这非常适合像 这样的命令find -exec ... {} +,它可以高效地构建一个长命令。远远超过find -exec ... {} \;

find . -type f -exec mv -t /new/path {} +

答案2

经典方法- find+while循环

 find /your/top/directory -maxdepth 1 -type f -print0 | while IFS="" read -r -d "" FILENAME; do mv -t /path/to/destination/directory  "$FILENAME";done

解释:

  • find为您提供文件列表(由 -type 指示忽略目录)/your/top/directory,在目录结构中最多下降 1 级,并将输出打印为以空字符分隔的字符串;
  • while循环并read获取该空分隔字符串的每个部分并将其存储到 FILENAME 变量中。
  • mv将当前文件扔到-t标志指示的目标目录。

当你想避免解析ls输出时,这种方法非常有用,事实上,我已经学会了它这里

相关内容