Recursively moving all files of a specific type into a target directory in Bash
如何将所有.txt文件从文件夹和包含的所有文件夹移到目标目录中。
最好将它们重命名为包含在其中的文件夹,尽管这并不重要。我对巴什不太熟悉。
要递归地移动文件,请将
1 | find src/dir/ -name '*.txt' -exec mv {} target/dir/ \; |
要在移动文件时对其进行重命名,就更难了。一种方法是有一个循环,通过
1 2 3 | find src/dir/ -name '*.txt' | while read file; do mv"$file""target/dir/$(tr / _ <<<"$file")" done |
试试这个:
1 | find source -name '*.txt' | xargs -I files mv files target |
这将比-exec的任何选项都快,因为它不会为需要移动的每个文件调用单个mv进程。
如果只是一个层次:
1 | mv *.txt */*.txt target/directory/somewhere/. |