私はUbuntuを使用しており、ファイルがたくさんあります。ファイルには2つのタイプがあります。
"img_00000_c0_1283347740957299us.jpg"
"img_00000_c1_1283347740342342us.jpg"
c0 または c1 で区切られます。ファイル番号が増えるほど、「00000」の場所の番号も増えます。たとえば、c0を入力すると、5番目のファイルの名前は "img_00005_c0_1283347740957299us.jpg". 問題は、"c0_"または"c1_"の後の長い数字が私にとって意味がなく、ランダムな数字であることです。常に"1283347740957299us"ではありません。したがって、このファイルの名前を変更したいと思います。のみ削除してください。
img_00005_c1_1283347740957299us.jpg ---> img_00005_c1.jpg
私はオンラインでいくつかの答えを試しました。たとえば、この答えです。
for FILE in eventDataLog.txt.2015*; do mv "$FILE" "abc-$FILE"; done
上記のコードは次のようになります。この回答役に立つでしょうが、私の場合、名前を変更することは文字を追加するものではありません。名前部分減算に対する回答も見つかりました。ここしかし、私の場合はランダムな数です。
よろしくお願いします!
ベストアンサー1
いくつかのオプションがあり、すべて_
名前の末尾から最短のサフィックスを削除します。
Perlベースの
prename
コマンドの使用$ prename -nv -- 's/_[^_]*\.jpg/.jpg/' *.jpg img_00000_c0_1283347740957299us.jpg renamed as img_00000_c0.jpg img_00000_c1_1283347740342342us.jpg renamed as img_00000_c1.jpg
n
(出力が満足な場合は、このオプションを削除してください)
シェルパラメータ拡張の使用
$ for f in img_*.jpg; do echo mv -- "$f" "${f%_*}.jpg"; done mv -- img_00000_c0_1283347740957299us.jpg img_00000_c0.jpg mv -- img_00000_c1_1283347740342342us.jpg img_00000_c1.jpg
echo
(出力が満足な場合は削除してください)。
パターンをより具体的に一致させるには(たとえば、1つ以上の10進数シーケンスの後にus
)、これを行うことができますが、提供された情報によると、これは必要ないようです。