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

有一个大文件夹充满了大量不同的文件。理想情况下,我想将所有不同的文件转移到各自的文件夹中; 所以jpg文件进入jpg文件夹等

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

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

但得到一个错误“jpgfolder”不是一个目录“

考虑到1)Q表示“文件的大集合” – 文件列表可能并非全部适合一个命令行缓冲区( MY系统上的2,084,684字节); 2)文件名可能包含有趣的字符(“ My Stuff.jpg ”); mv不是最好的方式。 使用findxargs ,以及确保文件名不得包含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 

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

如果你已经创建了mv /home/tony/Desktop/unsorted_files/*.jpg /home/tony/Desktop/jpgfolder 你创建/home/tony/Desktop/jpgfolder ,什么都没有丢失,但你必须像其他一样答案已经说过,先mkdir -p /home/tony/Desktop/jpgfolder

据我所知 – 修改是受欢迎的 – mv实际上并没有移动文件,它重命名它们。 因此,您尝试将所有jpg文件重命名为文件夹名称。

我会尝试:

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