ファイル名の初期文字列の名前変更

ファイル名の初期文字列の名前変更

名前の最初の部分を動的に削除し、別の場所にコピーする必要があります。私のファイル名は次のとおりです

Voice_XYZZ_1_1801.pdf
Voice_XYZZ_1_1801.ndx
Electon_MNOPQ_1_1801.pdf
Electon_MNOPQ_1_1801.ndx

実行時に音声、電子機器、またはその両方を作成できます。ファイル名から最初の部分を削除する必要があります。次のようにする必要があります。

XYZZ_1_1801.pdf
XYZZ_1_1801.ndx
MNOPQ_1_1801.pdf
MNOPQ_1_1801.ndx

これを達成するためにどのコマンドを使用できますか?

ベストアンサー1

fBourneシリーズシェルを使用していると仮定すると、次のコマンドを使用して、ファイル名変数から最短の先行部分文字列一致(アンダースコアを含む)を削除できます。${f#*_}

前任者。

$ touch Voice_XYZZ_1_1801.pdf Voice_XYZZ_1_1801.ndx Electon_MNOPQ_1_1801.pdf Electon_MNOPQ_1_1801.ndx

$ for f in Voice_* Electon_*; do echo "${f#*_}"; done
XYZZ_1_1801.ndx
XYZZ_1_1801.pdf
MNOPQ_1_1801.ndx
MNOPQ_1_1801.pdf

mv次のようにファイル名を変更するコマンドで使用できます。

for f in Voice_* Electon_*; do mv "$f" "${f#*_}"; done

次のコマンドを使用して、同様に別の場所にコピーできますcp

for f in Voice_* Electon_*; do cp "$f" "newdir/${f#*_}"; done

おすすめ記事