[英]Learning bash: Append a line to list of files
我有一個文件列表,我想在文件的末尾添加一行。 我找不到正確的方法:
find . | grep filexxx | xargs << echo "attribute=0000"
不幸的是,似乎沒有用。 沒有編寫腳本,哪個oneliner命令會這樣做?
謝謝!
您可以使用find的選項:-exec,如下所示:
find . -type f -name "file*" -exec bash -c 'echo "your line" >> $1' -- {} \;
您需要更改文件*以匹配您要查找的文件。
還有另一種可能性:
find . -type f | while read file; do echo "your line" >> $file ; done
您可以在上面找到grep或使用-name管道
編輯:
正如knittl在評論中所建議的那樣 ,如果您的文件名包含新的行字符,您將遇到上述一個班輪的問題..並且由Gordon提供解決方案:
find . -type f -print0 | while IFS= read -r -d '' file; do ...
或者使用一個簡單的循環:
for f in *txt; do echo "yada" >> "${f}"; done
有很多方法可以做到這一點。 明智的回答是一個。 這是另一個,也許更直觀,即使它產生更多的過程:
for fname in $(find . | grep filexxx) ; do echo "attribute=0000" >> $fname ; done
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.