私は複数の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
(テストしてみましたが、万が一の場合に備えてファイルをバックアップしておいてください。)