Cat

將行追加到目錄中所有文件的開頭

  • May 4, 2020

我試圖在目錄中所有文件的開頭添加兩行。

我可以使用以下命令對單個文件執行此操作:

echo -e "% First Line\n% "$(date)"\n\n$(cat file1.txt)">file1.txt

如何在目錄中所有文件的開頭添加兩行?

如果您的平台支持使用 就地編輯,請sed嘗試類似

sed -i "1i\\
First line\\
$(date)" *

不幸的是,這部分sed有點笨拙;我記得很難從文件中找出精確的語法。

首先,您的命令:

echo -e "% First Line\n% "$(date)"\n\n$(cat file1.txt)">file1.txt

強烈不建議這樣做。 如果您的文件包含任何反斜杠,您將遇到麻煩。請閱讀引用和命令替換。


對於單個文件,在文件開頭插入行的推薦 POSIX 方法是:

printf '%s\n' 0a 'First line' '2nd line; 3rd line is empty' '' . x | ex file.txt

0a意思是“在第 0 行之後追加”。這是POSIX 文件編輯器(順便說一下,ex還有另一種形式的編輯器)的命令。on 一行本身就結束了追加 vi。保存並退出。.``x

要一次執行多個文件,請使用for循環和文件 glob:

for f in *.txt; do
 printf '%s\n' 0a '# This line heads all files' . x | ex "$f"
done

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