我有各种文件夹,每个文件夹都包含这样的文件:
/.example1/example1.txt
/.example1/example2.txt
/.example2/example1.txt
/.example2/example2.txt
etc.
并希望找到一种方法将每个文件移动到其父文件夹的子文件夹中,例如:
/.example1/folder/example1.txt
/.example1/folder/example2.txt
/.example2/folder/example1.txt
/.example2/folder/example2.txt
etc.
有什么想法可以快速简单地处理大量文件吗?我已经尝试过使用find
但没有太多运气。
答案1
您可以使用 GNU 版本的find
和来完成此操作mv
,如下所示:
find . -mindepth 2 -maxdepth 2 -type f -execdir mv -vt ./folder/. {} +
我们限制find
查找 2 层深度的常规文件,然后使用该选项将所选文件移动到与所选文件相邻的-execdir
子目录中。folder
答案2
find /.example1 -name example*.txt" -type f | awk -F\/ '{ for(i=1;i<=NF-1;i++) { path=path$i"/" } } END { print "mv "$0" "path"folder/"$NF }' | sh
查找目录中的所有示例文件,然后使用 awk 解析返回的输出,形成使用 sh 执行的移动命令