特定のファイル名形式のファイルを見つけ、ヘッダーファイルを使用して各ファイルを分類し、各ファイルの結果を元のファイルに保存します。 [重複]

特定のファイル名形式のファイルを見つけ、ヘッダーファイルを使用して各ファイルを分類し、各ファイルの結果を元のファイルに保存します。 [重複]

私は複数のhtmlファイルを持っており、header.txtのようなヘッダファイル(少なくとも数行の長さ)にそれらを(個別に)分類したいと思います。すぐに到着します。ヘッダファイルを使用して各ファイルを分類するには、次のコマンドを使用できますが、元のファイル名で保存するには結果をどのように出力する必要がありますか?

find . -iname "*.html" | xargs -L 1 cat header.txt 

xargs上記は私が望むものを印刷しますが、最終的な>ソースファイル名を追加するためにパラメータをどのように引用しますか?

つまり、header.txtのテキストを各HTMLファイルの先頭に挿入したいと思います。このために上記のコマンドを変更できますか?それともこれを達成する他の方法はありますか?


アップデートとして、成功せずに投稿した後に試した内容は次のとおりです。

find . -iname "*.html" | xargs -L 1 cat header.txt {} > {}.new

文字通りという名前のファイルとして印刷されることを除いては大丈夫です{}.new。ファイルは次のようにする必要がありますが、役に立ちません。

また、@Daveの提案を試しましたが、修正できない構文エラーがありました。

 find . -iname "*.html" -exec (cat header.txt; cat {}) > {}.new
-bash: syntax error near unexpected token `('

ベストアンサー1

header.txtのテキストを各HTMLファイルの先頭に挿入したいと思います。

すべてのHTMLファイルの前にコンテンツを追加するには、header.txt次のonelinerを使用します。

for i in `find . -name '*.html'` ; do cat /path/to/header.txt > "$i".tmp && cat "$i" >> "$i".tmp && mv "$i".tmp "$i" ; done

コンテンツ1.html:

first html file contents

コンテンツheader.txt:

my header

1.htmlスクリプトの実行後の内容:

my header
first html file contents

(テストしてみましたが、万が一の場合に備えてファイルをバックアップしておいてください。)

おすすめ記事