Cat

查找具有特定文件名格式的文件,用標頭檔對每個文件進行分類,並將每個此類文件的結果保存到原始文件

  • October 28, 2015

我有一堆 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 `('

我想將 header.txt 中的文本插入每個 html 文件的開頭。

要將內容header.txt添加到所有 HTML 文件中,請使用以下 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

(我已經測試過了,但請備份您的文件以防萬一。)

您可以使用 while 循環,如下所示:

find . -iname "*.html" | while read line; do cat header.txt "$line" > "${line}.new" ; done

引用自:https://unix.stackexchange.com/questions/239285