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