如何将数千个文件夹中的图像复制或移动到一个文件夹中?

如何将数千个文件夹中的图像复制或移动到一个文件夹中?

我有大约 2855 个文件夹,其中包含大量图像,我想将所有图像复制或移动到一个文件夹中。

请提供详细解释。

答案1

这是一个非常糟糕的想法。

但是,假设您的图像名称是唯一的(尽管可以使用 处理重复项mv --backups-numbered),并且所有包含图像的目录都在名为 的目录下$HOME/source,并且仅包含图像(没有不应移动的文件),并且文件名可能包含愚蠢的字符,并且目的地是$HOME/destination,那么......

首先阅读man findman xargs然后man mv。然后是一个简单的

find $HOME/source -type f -print0 |\
    xargs -0 --no-run-if-empty mv --target-directory=$HOME/destination/ --backup=numbered

重新阅读man findman xargsman mv获得详细解释。

完成后,您将在 下留下一大堆空目录$HOME/source,可以使用以下命令删除它们:

find $HOME/source -depth -type d -print0 | xargs -0 --no-run-if-empty rmdir

man rmdir

答案2

将目录更改cd为所有文件夹所在的目录。这会将工作文件夹和子文件夹中的所有文件移动到一个文件夹中。名称相同的不同文件将保留在原始文件夹中

谨慎运行命令。从错误的位置运行可能会导致重要文件丢失。

跑步:

find . -type f -print0 | xargs -0 -I _ mv -vn _ /path/to/copy/

如果你想要一些带有扩展名的文件,例如 .jpg

跑步:

find . \( -name '*.jpg' -or -name '*.png' \) -type f -print0 | xargs -0 -I _ mv -vn _ /path/to/copy/

相关内容