Cat
將行追加到目錄中所有文件的開頭
我試圖在目錄中所有文件的開頭添加兩行。
我可以使用以下命令對單個文件執行此操作:
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