Jun*_*tez 6 command-line files directory merge
我在一个目录下的多个文件夹中有多个文件,这些文件需要在一个文件夹中。是否有命令行可以帮助我完成此操作?
使用find+ xargs+ mv:
find . -type f -print0 | xargs -0 -I file mv --backup=numbered file .
Run Code Online (Sandbox Code Playgroud)
这会将当前工作目录及其子目录中的所有文件(递归地)移动到当前工作目录中,对具有相同文件名的文件进行数字编号,以避免覆盖具有相同文件名的文件。
包含,和子tmp文件夹的文件夹的示例结果1,每个子文件夹都包含,和文件:231.ext2.ext3.ext
ubuntu@ubuntu:~/tmp$ tree
.
??? 1
? ??? 1.ext
? ??? 2.ext
? ??? 3.ext
??? 2
? ??? 1.ext
? ??? 2.ext
? ??? 3.ext
??? 3
??? 1.ext
??? 2.ext
??? 3.ext
3 directories, 9 files
ubuntu@ubuntu:~/tmp$ find . -type f -print0 | xargs -0 -I file mv --backup=numbered file .
ubuntu@ubuntu:~/tmp$ tree
.
??? 1
??? 1.ext
??? 1.ext.~1~
??? 1.ext.~2~
??? 2
??? 2.ext
??? 2.ext.~1~
??? 2.ext.~2~
??? 3
??? 3.ext
??? 3.ext.~1~
??? 3.ext.~2~
3 directories, 9 files
Run Code Online (Sandbox Code Playgroud)
小智 5
如果你的目录结构看起来像
根目录
- 目录A
- 归档一个
- 文件b
- 目录B
- 文件 c
- 文件d
等等
你可以做一个简单的
mv **/* .
Run Code Online (Sandbox Code Playgroud)
将深度为 1 的所有文件移动到根目录。简单又优雅!