如何将多个目录合并为一个

Jun*_*tez 6 command-line files directory merge

我在一个目录下的多个文件夹中有多个文件,这些文件需要在一个文件夹中。是否有命令行可以帮助我完成此操作?

kos*_*kos 9

使用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 的所有文件移动到根目录。简单又优雅!