簡體   English   中英

學習bash:在文件列表中附加一行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM