Bash のディレクトリ内のファイルをループする
Bash のループにより、多くのファイルに対して操作を実行できるようになりました。ファイルやフォルダを操作するには、いくつかの権限が必要です。
最も効果的な方法はループです。これにより、ユーザーは単純なコード行を使用して同じロジックをオブジェクトに再度適用できます。
ファイルをループする
まず、test
ディレクトリを作成し、ディレクトリ内に複数のファイルを作成します。test
ディレクトリに file1.txt
、file2.txt
、file3.txt
、file4.txt
、file5.txt
の 5つのファイルを作成しましょう。
mkdir
を使用して test
フォルダーを作成し、touch
コマンドを使用してその中に 5つのファイルを作成しました。
ループオーバーディレクトリ
新しく作成された 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 行目にプレビューされます。ファイルに追加したデータを確認するには、cat
と for
ループを使用してデータを表示する必要があります。
~/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
拡張子はバックアップファイルを示します。バックアップを作成するには、cp
と for
ループを使用します。
~/test$ for file in *; do cp $file "$file.bak" ; done
ls -l
を使用して、test
ディレクトリ内のすべてのファイルを一覧表示できます。
~/test$ ls -l
test
ディレクトリをチェックしてみましょう。
フォルダ内に .bak
拡張子が付いたバックアップファイルが作成されていることがわかります。