Bash のディレクトリ内のファイルをループする

Nilesh Katuwal 2023年1月30日 2022年3月24日
  1. ファイルをループする
  2. ループオーバーディレクトリ
  3. ループを使用してディレクトリ内にすべてのファイルを書き込む
  4. ディレクトリ内のすべてのファイルのバックアップを作成する
Bash のディレクトリ内のファイルをループする

Bash のループにより、多くのファイルに対して操作を実行できるようになりました。ファイルやフォルダを操作するには、いくつかの権限が必要です。

最も効果的な方法はループです。これにより、ユーザーは単純なコード行を使用して同じロジックをオブジェクトに再度適用できます。

ファイルをループする

まず、test ディレクトリを作成し、ディレクトリ内に複数のファイルを作成します。test ディレクトリに file1.txtfile2.txtfile3.txtfile4.txtfile5.txt の 5つのファイルを作成しましょう。

bash のディレクトリ内のファイルをループします

mkdir を使用して test フォルダーを作成し、touch コマンドを使用してその中に 5つのファイルを作成しました。

bash ループの例

ループオーバーディレクトリ

新しく作成された test ディレクトリをループして、ディレクトリ内のファイル名を表示してみましょう。これを行うには、for ループを使用します。

~/test$ for file in *; do echo $file; done

test ディレクトリに移動し、$ の後に上記のコマンドを入力します。*は、ディレクトリ内のすべてのファイルを示します。

出力:

file1.txt
file2.txt
file3.txt
file4.txt
file5.txt

ループを使用してディレクトリ内にすべてのファイルを書き込む

Hello World!を作成するには各ファイルで、for ループを使用してファイルを反復処理し、echo-e フラグを使用して改行を保持します。

~/test$ for file in *; do echo -e "$file\nHello World!"> $file ; done

$file はファイルの先頭にファイル名を表示し、\n は行を区切り、Hello World!は 2 行目にプレビューされます。ファイルに追加したデータを確認するには、catfor ループを使用してデータを表示する必要があります。

~/test$ for file in *; do cat $file ; done

出力:

file1.txt
Hello World!
file2.txt
Hello World!
file3.txt
Hello World!
file4.txt
Hello World!
file5.txt
Hello World!

ディレクトリ内のすべてのファイルのバックアップを作成する

.bak 拡張子はバックアップファイルを示します。バックアップを作成するには、cpfor ループを使用します。

~/test$ for file in *; do cp $file "$file.bak" ; done

ls -l を使用して、test ディレクトリ内のすべてのファイルを一覧表示できます。

~/test$ ls -l

test ディレクトリをチェックしてみましょう。

bash バックアップ

フォルダ内に .bak 拡張子が付いたバックアップファイルが作成されていることがわかります。

関連記事 - Bash Loop