シェルからファイル名の先頭と末尾を削除します。

シェルからファイル名の先頭と末尾を削除します。

私のモバイルスクリーンショットの名前を次に変更したいと思います Screenshot_2020-08-06-16-13-43-731_com.tclhz.gallery.jpg2020-08-06.jpg

ファイル名の固定部分に対して最初の文字N個と最後の文字N個を削除できるように一般化したいと思います。

私たちはそれについて何ができますか?

ありがとうございます!

答え1

あなたはそれを使用することができますシェル文字列の操作機能。ファイル名が変数に格納されていると仮定すると、name次の2行は最初のアンダースコアの前のすべてのエントリを削除し、その-hh-mm-ss部分で始まるすべてのエントリを削除します。次に、ファイル拡張子を手動で再追加します。

newname="${name#*_}"
newname="${newname%-??-??-??-*}.jpg"

その後、コマンドを実行できます

mv "$name" "$newname"

ファイルの名前を変更します。

例:

$ name="Screenshot_2020-08-06-16-13-43-731_com.tclhz.gallery.jpg"
$ newname="${name#*_}"; newname="${newname%-??-??-??-*}.jpg"; echo "$newname"
2020-08-06-16.jpg

現在のディレクトリの内容全体を処理するには:

for name in *.jpg
do
    newname="${name#*_}"
    newname="${newname%-??-??-??-*}.jpg"
    mv "$name" "$newname"
done

関連情報