Bash 在单个sed命令中将文本添加到多个文件的开头

Bash 在单个sed命令中将文本添加到多个文件的开头,bash,sed,Bash,Sed,我想将文本foo添加到某个目录中所有文件的开头。我尝试了以下命令: sed '1i foo' * 但这只是将文本添加到第一个文件中。如何在单个sed命令中附加到所有文件?我知道它可以通过for循环完成,我特别要求使用一个sed命令如果您想更改文件,只需添加-I标志: 它将在每个文件的开头添加foo 注意:没有-i,文件实际上没有被修改。foo仅在整个内容的开头添加到标准输出,因此仅出现一次。如果要更改文件,只需添加-i标志: 它将在每个文件的开头添加foo 注意:没有-i,文件实际上没有被修改

我想将文本foo添加到某个目录中所有文件的开头。我尝试了以下命令:

sed '1i foo' *

但这只是将文本添加到第一个文件中。如何在单个sed命令中附加到所有文件?我知道它可以通过for循环完成,我特别要求使用一个sed命令

如果您想更改文件,只需添加-I标志:

它将在每个文件的开头添加foo


注意:没有-i,文件实际上没有被修改。foo仅在整个内容的开头添加到标准输出,因此仅出现一次。

如果要更改文件,只需添加-i标志:

它将在每个文件的开头添加foo

注意:没有-i,文件实际上没有被修改。foo仅在整个内容的开头添加到标准输出中,

使用选项-分隔或短:-s将文件视为单独的而不是单个连续的长流。

使用选项-分隔或短:-S将文件视为单独的而不是单个连续的长流。

:如何:

sed -i '1 s/^/foo/g' *
那么:

sed -i '1 s/^/foo/g' *

请注意,通过sed对文件进行-i/-in-place编辑是一个GNU扩展,因此这可能无法在所有Unix平台上工作。这可能可以工作,但我明确没有包括-i,因为我想先测试它是否工作。@finitegraygreen:我不知道,谢谢。值得一提的是,它也适用于FreeBSD的sed。请注意,通过sed对文件进行-i/-in-place编辑是一个GNU扩展,因此这可能不适用于所有Unix平台。这可能有效,但我明确没有包括-i,因为我想先测试它是否有效。@finitegraygreen:我不知道,谢谢。不管它值多少钱,它也可以与FreeBSD的sed一起使用。