将嵌套文件夹的所有文件移动到其他文件夹

将嵌套文件夹的所有文件移动到其他文件夹

我有一个像这样的文件夹层次结构:

MainFolder
|
| - 01
| - 02
| - 03
| - 04
| - 05
| - 06
| - 07
| - 08
| - 09
| - 10

在这 10 个文件夹中,每个文件夹中又有另外 10 个文件夹,以此类推。总共有 10 个级别。

我想将所有文件(包括所有可能的扩展名(包括 zip 和 rar))移动到名为 FinalFolder 的文件夹。

我正在尝试使用以下命令:

find MainFolder -type f -print0 | xargs -0 mv -t FinalFolder

并且“正常工作”。总共,我捕获了 5k 个文件,但我知道我有 25k 个文件,所以没有捕获所有文件。可能是什么问题?更重要的是,如何修复它?

答案1

使用更简单的 find 命令来展平源目录。

警报:首先确保目标目录存在!(否则你可能会得到名为 FinalFolder 的文件仅包含您的文件)

 find MainFolder -type f -exec mv \{\} FinalFolder \;

编辑

如果有两个或多个文件的名称发生冲突,这可能会覆盖它们。如果要避免这种情况,可以使用命令代替来附加版本号cpmv这样做的副作用是原始目录树保持不变,因此可能需要在处理后将其删除。

 find MainFolder -type f -exec cp --backup=numbered \{\} FinalFolder \;

如果此命令不断要求确认,则可能是由于该cp命令别名为cp -i。在这种情况下,请使用/bin/cp代替cp

相关内容