次のディレクトリにあるファイルの名前を変更する必要があります。
11-Vnnn_S2_L001_aaa_bbb_ccc_ddd.ext
到着
Vnnn.ext
basename
Linuxでコマンドを使用してこれを行う方法はありますか?
私はコーディングに初めて触れたので、いくつかの説明を喜んで提供します。
ベストアンサー1
簡単なループ:
for name in *.ext; do
newname=${name%%_*}.ext
newname=${newname#*-}
echo mv -- "$name" "$newname"
done
これは.ext
現在のディレクトリで終わるすべての名前で繰り返されます(したがって、まずそのディレクトリに変更します)。これらの名前ごとに、変数は最初に名前のnewname
最初の文字の前に設定され、最後に追加されます。次に、最初の文字の前の値を削除して最終値を作成します。_
.ext
-
newname
ここで使用される2つの引数は、それぞれ値の終わりで最も長い一致部分文字列と最初から最も短い一致部分文字列を置き換えて削除します${variable%%pattern}
。${variable#pattern}
pattern
$variable
コマンドを実行してecho
正しく機能していることを確認し、古い内容を削除echo
しmv
て実際にファイル名を変更してください。