一部のファイルの変更とファイル名の追加

一部のファイルの変更とファイル名の追加

ディレクトリには多くのテキスト(何百ものtxt)があります。それぞれに固有のファイル名があります。各ファイルの最初の行に各ファイルのファイル名を挿入したいと思います。 Bashスクリプトを使用してこれをどのように実行できますか?

答え1

標準的なアプローチは一時ファイルを使用することですが、ファイルを括弧catで囲むと、その場所でファイルを変更できます$()

for file in *.txt; do echo "$file"$'\n'"$(cat -- "$file")" > "$file"; done

答え2

標準のテキストエディタを使用できます。

for f in *; do printf '%s\n' 1i "$f" . w q | ed "$f"; done

答え3

for file in *; do
 (echo "$file"; cat -- "$file") > "$file.new"
 mv -- "$file.new" "$file"
done

このループは、すべてのファイルを繰り返して各ファイル名をエコーし​​、ファイルの内容を追加し、追加されたサフィックスを使用してすべて入れます.new

既存のファイルごとに新しいファイルを作成するので、後でファイルの名前を変更する必要があります。

結果を新しいディレクトリに入れてから、古いディレクトリを削除できます。

mkdir new
for file in *; do
 (echo "$file"; cat "$file") > "new/$file"
done

-i ファイルを適切に編集するオプションと一緒にsedを使用することもできます。 Perlもこれを許可します。それはすべて利用可能な他のツールによって異なります。 :)

関連情報