GNU/Linux >> Linux の 問題 >  >> Linux

Bashファイルの名前をカウンターで一括変更しますか?

フォルダ内のすべてのファイルの名前をPREFIX+COUNTER+FILENAMEに変更したい

例:
入力:

england.txt  
canada.txt  
france.txt

出力:

CO_01_england.txt  
CO_02_canada.txt  
CO_03_france.txt

承認された回答:

これはあなたが求めることを行います:

n=1; for f in *.txt; do mv "$f" "CO_$((n++))_$f"; done

仕組み

  • n=1

    これにより、変数nが初期化されます 1に。

  • for f in *.txt; do

    これにより、名前が.txtで終わる現在のディレクトリ内のすべてのファイルのループが開始されます。 。

  • mv "$f" "CO_$((n++))_$f"

    これにより、ファイルの名前がCO_になるように変更されます。 nのプレフィックス カウンターとして。 ++ シンボルは、変数nをインクリメントするようにbashに指示します 。

  • done

    これにより、ループの終了が通知されます。

改善

このバージョンはprintfを使用します これにより、数値のフォーマット方法をより細かく制御できます:

n=1; for f in *.txt; do mv "$f" "$(printf "CO_%02i_%s" "$n" "$f")"; ((n++)); done

特に、%02i nの場合、formatは数値の前に先行ゼロを置きます まだ1桁です。


Linux
  1. Linuxターミナルでファイルの名前を変更します

  2. Bashを使用してファイルから行を読み取る:対その間?

  3. ファイル名のForループ?

  1. Bash でファイルの内容をループする

  2. bash スクリプトを使用してファイル名のスペースを置き換える方法

  3. 長い名前の Linux mv ファイル

  1. BASH で mv を使用してファイル名にタイムスタンプを追加する

  2. Bashでファイルが空かどうかを確認するには?

  3. .txt ファイルに書き込みますか?