基于这个答案,我想对目录及其子目录中的所有文件执行操作。
以下命令适用于单个文件,也适用于循环中的多个文件。
for i in *.html; \
do sed -i '/<head>/a <link rel="stylesheet" href="/home/jian/postgres/doc/src/sgml/html/stylesheet.css">\' $i; \
done
但是以下命令将不起作用。
find . -type d -exec \
for i in *.html; \
do sed -i '/<head>/a <link rel="stylesheet" href="/home/jian/postgres/doc/src/sgml/html/stylesheet.css">\' $i; \
done \
\;
它给出了以下错误:
bash: syntax error near unexpected token `do'
bash: syntax error near unexpected token `done'
;: command not found
我在这里找到了一个相关的帖子。
调用当前目录或以下目录中名称匹配的所有常规文件
sed
:find
*.html
假设您
sed
在上面的代码中正确插入了表达式,这将sed
使用找到的文件的批量路径名调用,确保sed
调用的次数尽可能少。或者,
这启用了在路径名
**
中工作*
但匹配的模式(“递归”)。/
它还允许模式匹配隐藏的名称(就像find
也会这样做),如果没有名称与模式匹配,则告诉 shell 失败并出现错误。这里的区别在于