0

ファイル名の先頭から 1234- を削除する次のコードを取得しました

rename -v "s/^1234-//g" *.***

入力:

1234-テスト1.テスト2.jpg

出力:

test1.test2.jpg

そして、ファイル名の末尾に -1234 を追加するこのコードのビット

for file in *.jpg; do echo $(basename $file .jpg)-1234; done

入力:

test1.test2.jpg

出力:

test1.test2-1234.jpg

これらの 2 つのコマンドを 1 つのスクリプトに結合する方法を探していますが、可能であれば、コードの 2 番目のビットを回避して、一度実行されるたびに -1234 を追加し続けます。

4

2 に答える 2

0

これは、すべてのファイルが.jpg次のとおりであることを前提としています。

rename -v "s/^1234-(.+)(\.jpg)/$1-1234$2/" *.*

これはファイル名全体に一致しますが、2 つのグループの後の部分だけをキャプチャ1234-します。キャプチャされたパーツへの$1および領域の後方参照。$2

于 2012-12-06T09:08:44.690 に答える
0

これは次のようになります。

for file in *.jpg; do
   basename=${file%.*}               # Get the basename without using a subprocess.
   extension=${file##*.}             # Get the extension if you want to add *.JPG in the for, can be skipped if only *.jpg.

   newname=${basename#1234-}         # Remove "1234-" in front of basename.
   test "$basename" = "$newname" &&  # If basename did not start with "1234-", skip this file.
     continue  

   newname=${newname%-1234}          # Remove an eventual "-1234" at the end of newname.
   newname="${newname}-1234"         # Add "-1234" at the end of newname.
   newname="$newname.$extension"     # Restore extension.
   echo mv "$file" "$newname"        # echo rename command.
done

出力に満足したら、最後の行のエコーを削除します。

于 2012-12-06T09:33:22.917 に答える