我可以找到我想要的所有文件,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
输出时,这种方法非常有用,事实上,我已经学会了它这里。