将特定类型/扩展名的文件从一个目录移动到另一个目录?

将特定类型/扩展名的文件从一个目录移动到另一个目录?

有一个大文件夹,里面装满了各种不同的文件。理想情况下,我想将所有不同的文件移到各自的文件夹中;因此,jpg 文件应该放到 jpg 文件夹中,等等。

原始文件夹:unsorted_files 目标文件夹:jpgfolder 我试过了

mv /home/tony/Desktop/unsorted_files/*.jpg /home/tony/Desktop/jpgfolder

但出现错误“jpgfolder”不是目录”

答案1

考虑到 1)Q 说“大量的文件”——文件列表可能不适合一个命令行缓冲区(2,084,684 字节我的系统);2)文件名可能包含奇怪的字符(“ My Stuff.jpg”);mv这不是最好的方法。使用find、,xargs并确保文件名不能包含 NUL 字节(或斜杠):

find /home/tony/Desktop/unsorted_files/ -maxdepth 1 -type f -iname '*.jpg' -print0 | \
    xargs -0 --no-run-if-empty echo mv --target-directory=/home/tony/Desktop/jpgfolder

一旦echod 命令看起来正确,删除echo,然后让其mv完成工作。

如果你已经完成mv /home/tony/Desktop/unsorted_files/*.jpg /home/tony/Desktop/jpgfolder 你创建了/home/tony/Desktop/jpgfolder,没有什么丢失,但是你必须像其他答案所说的那样,mkdir -p /home/tony/Desktop/jpgfolder首先。

答案2

据我所知 - 欢迎更正 -mv实际上不会移动文件,而是重命名文件。因此,您正在尝试将所有 jpg 文件重命名为文件夹名称。

我会尝试:

rsync /home/tony/Desktop/unsorted_files/*.jpg /home/tony/Desktop/jpgfolder

相关内容