有一个大文件夹,里面装满了各种不同的文件。理想情况下,我想将所有不同的文件移到各自的文件夹中;因此,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
一旦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
首先。
答案2
据我所知 - 欢迎更正 -mv
实际上不会移动文件,而是重命名文件。因此,您正在尝试将所有 jpg 文件重命名为文件夹名称。
我会尝试:
rsync /home/tony/Desktop/unsorted_files/*.jpg /home/tony/Desktop/jpgfolder