1

約 200 万枚の画像の名前を変更する必要があります。ファイルは次のようになり、引数なしimage.jpg?arg=valueで名前を変更する必要があります。image.jpg

これが私が現在行っていることです:

sudo find . -name "*.jpg?*" -exec rename 's/(\?.*)//' {} \;

これで仕事は完了しますが、永遠にかかるようです。これをスピードアップする方法について誰か提案がありますか?

4

3 に答える 3

4

試してみませんか

sudo find . -name "*.jpg*" -print0 | xargs -0 -I '{}' -P4 -n1 rename 's/(\?.*)//' {} \;

のmanページから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 が非常に過負荷になることを覚えておいてください。

また

gnuパラレルを使用する

于 2013-11-11T10:43:28.173 に答える
2

名前の変更を並列化します。2 つ (または 3 つ、4 つ) のシェルを開始し、コマンドを実行します。2 つのコマンドが同じイメージで実行されないように、コマンドのイメージを何らかの方法で分離してください。

于 2013-11-11T10:49:18.837 に答える
0

これを Ubuntu 14.04 で試しましたが、うまくいきません。コマンドは正常に実行されましたが、何も起こりませんでした。名前の変更正規表現の部分が正しくないと考えました。これを確認するには:

$ echo Screenshot_from_2015-08-17_122834.png.de4Mzv2 | sed 's/(\?.*)//'
Screenshot_from_2015-08-17_122834.png.de4Mzv2

ただし、正規表現を次のように変更すると機能します。$ echo Screenshot_from_2015-08-17_122834.png.de4Mzv2 | sed 's/.[^.]*$//' Screenshot_from_2015-08-17_122834.png

@realspirituals によって提案されたコマンドでそれを使用すると、次のファイルがあります。

$ ls -ltr
Screenshot_from_2015-08-19_114601.png.somegthingy 
Screenshot_from_2015-08-17_122834.png.de4Mzv2 
Screenshot_from_2015-08-17_122455.png.ac84Lk1
Screenshot_from_2015-08-13_154012.png.uNl34sH 
Screenshot_from_2015-08-13_101459.png.53rv1ce 
Screenshot_from_2015-08-13_101437.png.l4Pt0pz 
Screenshot_from_2015-08-13_101230.png.p31Ic4n

$ sudo find . -name "*.png*" -type f -print0 | xargs -0 -I {} -P4 -n1 rename 's/\.[^\.]*$//' {} \;
Screenshot_from_2015-08-19_114601.png 
Screenshot_from_2015-08-17_122834.png 
Screenshot_from_2015-08-17_122455.png
Screenshot_from_2015-08-13_154012.png 
Screenshot_from_2015-08-13_101459.png 
Screenshot_from_2015-08-13_101437.png 
Screenshot_from_2015-08-13_101230.png
于 2015-09-25T10:16:13.963 に答える