将特定类型/扩展名的文件从一个目录移动到另一个目录?
有一个大文件夹充满了大量不同的文件。理想情况下,我想将所有不同的文件转移到各自的文件夹中; 所以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
不是最好的方式。 使用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
一旦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