shell bash/osx终端中多个文件的前缀

wljmcqd8  于 2023-10-23  发布在  Shell
关注(0)|答案(4)|浏览(98)

我想在bash中为多个文件添加一些文本,我发现了这篇文章,它涉及到prepend:prepend to a file one liner shell?
我可以使用find找到所有需要处理的文件:

find ./ -name "somename.txt"

但是我如何用一根管子把两者合并结合起来呢?

xqnpmsa8

xqnpmsa81#

你有几个选择最大的可能是sed:

find ./ -name somename.txt -exec sed -e '1i\
My new text here' {} \;

如果你添加'2 q'来告诉它你在预扩展文本后完成了,这会更快,如果会在文件中使用-i标志:

find ./ -name somename.txt -exec sed -i .bak -e '2q;1i\
My new text here' {} \;

要在多行前添加前缀,需要在每一行末尾添加一个反斜杠。
这使得原始文件的扩展名为.bak

7uzetpgm

7uzetpgm2#

find . -name "somefiles-*-.txt" -type f | while read line; do  sed -i 'iThis text gets prepended' -- "$line"; done

find . -name "somefiles-*-.txt" -type f | xargs sed -i 'iGets prepended' --

最好的(我认为):

find . -name "somefiles-*-.txt" -type f -exec sed -i 'iText that gets prepended (dont remove the i)' -- '{}' \;

谢谢你的失踪“-提示。我也添加了重要的内容。

u4vypkhs

u4vypkhs3#

find . -name "somename.txt" | while read a; do prepend_stuff_to "$a" ; done

find . -name "somename.txt -exec prepend_stuff_to "{}" \;
2guxujil

2guxujil4#

find ./ -name "somename.txt" -print0 | xargs -0 -n 1 prepend_stuff_to

相关问题