名前の最初の部分を動的に削除し、別の場所にコピーする必要があります。私のファイル名は次のとおりです
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
f
Bourneシリーズシェルを使用していると仮定すると、次のコマンドを使用して、ファイル名変数から最短の先行部分文字列一致(アンダースコアを含む)を削除できます。${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