Sed

將行附加到許多文件

  • March 9, 2016

我想在超過 200,000 個文件中添加一些文本我正在嘗試這個

find . -name *.txt -print | xargs -I % echo "hello world" >> %

但什麼都沒有發生。當我執行find . -name *.txt它時,它會自行工作echo "hello world" >> myfile.txt

外殼在看到它之前正在擴展該>> %部分。xargs

如果你需要做 shell 重定向,你必須嘗試這樣的事情:

find . -name "*.txt" -exec sh -c '
   echo "hello world" >> "$0"
   ' {} \;

這個怎麼運作:

  1. find替換{}為它匹配的每個文件
  2. bash -c "some command" arg0...``$0..."some command"腳本內設置

或者,您可以使用sed不依賴於>>例如的命令

find . -name "*.txt" -exec sed -i -e '$a\
hello world' {} \;

參考:

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