如何在不使参数列表太长的情况下移动多个文件?
How can I move many files without having Argument list too long?
我正在尝试将大约 700,000 个 .jpg 文件从我的 Ubuntu 服务器中的一个目录移动到另一个目录。我尝试了以下方法:
xargs mv * -t /var/www/html/
和
echo (*.jpg|*.png|*.bmp) | xargs mv -t /var/www/html/
和
echo (*.jpg) | xargs mv -t /var/www/html/
和
find . -name "*.jpg" -print0 | xargs mv * ../
他们都给我同样的错误:/usr/bin/xargs:参数列表太长
我该怎么办?请帮帮我。谢谢:)
如果您使用 find
,我建议您使用 -exec
属性。所以你的结果应该是 find . -name "*.jpg" -exec mv {} /home/new/location \;
.
不过,我建议您检查 find
命令 returns 是什么,将 exec
部分替换为:-exec ls -lrt {} \;
您可以尝试:
for f in *.jpg do;
mv -tv $f /var/www/html/
done
for f in *.png do;
mv -tv $f /var/www/html/
done
for f in *.bmp do;
mv -tv $f /var/www/html/
done
还有,你要仔细阅读xargs(1);我强烈怀疑
find . -name "*.jpg" -print0 | xargs -n 1000 -I '{}' mv '{}' ../
应该适合你
最后,了解更多rename(1)。可能够用了。
尝试:
find /path/to/old-directory -type f | xargs -i mv "{}" /path/to/new-directory
我正在尝试将大约 700,000 个 .jpg 文件从我的 Ubuntu 服务器中的一个目录移动到另一个目录。我尝试了以下方法:
xargs mv * -t /var/www/html/
和
echo (*.jpg|*.png|*.bmp) | xargs mv -t /var/www/html/
和
echo (*.jpg) | xargs mv -t /var/www/html/
和
find . -name "*.jpg" -print0 | xargs mv * ../
他们都给我同样的错误:/usr/bin/xargs:参数列表太长
我该怎么办?请帮帮我。谢谢:)
如果您使用 find
,我建议您使用 -exec
属性。所以你的结果应该是 find . -name "*.jpg" -exec mv {} /home/new/location \;
.
不过,我建议您检查 find
命令 returns 是什么,将 exec
部分替换为:-exec ls -lrt {} \;
您可以尝试:
for f in *.jpg do;
mv -tv $f /var/www/html/
done
for f in *.png do;
mv -tv $f /var/www/html/
done
for f in *.bmp do;
mv -tv $f /var/www/html/
done
还有,你要仔细阅读xargs(1);我强烈怀疑
find . -name "*.jpg" -print0 | xargs -n 1000 -I '{}' mv '{}' ../
应该适合你
最后,了解更多rename(1)。可能够用了。
尝试:
find /path/to/old-directory -type f | xargs -i mv "{}" /path/to/new-directory