我需要重新命名大约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/

10-11 22:05