我需要重新命名大约200万张图片。
这些文件看起来像image.jpg?arg=value
文件,需要在没有参数的情况下重命名为image.jpg
。
以下是我目前正在做的事情:
sudo find . -name "*.jpg?*" -exec rename 's/(\?.*)//' {} \;
这项工作完成了,但似乎要花很长时间。有人对如何加快速度有什么建议吗?
最佳答案
你能试试吗
sudo find . -name "*.jpg*" -print0 | xargs -0 -I '{}' -P4 -n1 rename 's/(\?.*)//' {} \;
从
xargs
的手册页 --max-procs=max-procs
-P max-procs
Run up to max-procs processes at a time; the default is 1. If
max-procs is 0, xargs will run as many processes as possible at
a time. Use the -n option with -P; otherwise chances are that
only one exec will be done.
在这里,我将最大子进程限制为4。如果您想要更多,那么标记-P0,这将采取最大可能的子,但请记住,您的CPU将严重超载。
或者
使用gnuparallel
关于linux - 重命名Linux上的数百万个文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19904182/