テキストファイルの名前変更

テキストファイルの名前変更

複数のテキストファイルがあり、以下のようにいくつかのファイル名を抽出します。

DFC_2_31A_K14_G008_F2_001D.txt
DFC_2_31A_K66_G005_F1_001D.txt
DFC_2_31A_K66_G005_F2_001D.txt
DFC_2_33_I_K15_G001_F1_001D.txt
DFC_2_33_I_K15_G001_F2_001D.txt
YFC_6_80I_S27_G008_F1_001D.txt
YFC_6_80I_S27_G008_F2_001D.txt
YFC_6_80I_S79_G005_F1_001D.txt
YFC_6_80I_S79_G005_F2_001D.txt
GPC_10_161_A_B_K37_G001_F1_001D.txt
GPC_10_161_A_B_K37_G001_F2_001D.txt
GPC_10_161_A_B_K37_G002_F1_001D.txt
GPC_10_161_A_B_K37_G002_F2_001D.txt
GPC_10_161_A_B_K37_G003_F1_001D.txt

すべてのファイル名を以下のように同じパターンにするにはどうすればよいですか? (ファイル名に6ポイントが必要です \*\_\*\_\*\_\*\_\*\_\*\_001D.txt

DFC_2_31A_K14_G008_F2_001D.txt
DFC_2_31A_K66_G005_F1_001D.txt
DFC_2_31A_K66_G005_F2_001D.txt
DFC_2_33I_K15_G001_F1_001D.txt
DFC_2_33I_K15_G001_F2_001D.txt
YFC_6_80I_S27_G008_F1_001D.txt
YFC_6_80I_S27_G008_F2_001D.txt
YFC_6_80I_S79_G005_F1_001D.txt
YFC_6_80I_S79_G005_F2_001D.txt
GPC_10_161AB_K37_G001_F1_001D.txt
GPC_10_161AB_K37_G001_F2_001D.txt
GPC_10_161AB_K37_G002_F1_001D.txt
GPC_10_161AB_K37_G002_F2_001D.txt
GPC_10_161AB_K37_G003_F1_001D.txt

ベストアンサー1

for file in *_001D.txt; do 
    if [[ "$file" =~ "A_B" ]]; then 
        mv "$file" "${file//_A_B/AB}"
    fi
    if [[ "$file" =~ "_I_K" ]]; then 
        mv "$file" D"${file/_I_/I_}"
    fi
done

単純なループですべてのファイルを繰り返しながら、forまずファイル名に変更したいパターンがあることを確認します。存在する場合は、mvパラメータ置換を使用して新しいファイル名を派生させます。仕組みは次のとおりです。

変数の場合、haystack構文は${haystack/needle/pin}最初のインスタンスを見つけてneedle置き換えますpin。 2つの/s(たとえば${haystack//needle/pin})を使用すると、みんなこの例は初めてではありません。

おすすめ記事