![使用 sed 和 find 执行目录下的所有文件](https://linux22.com/image/929732/%E4%BD%BF%E7%94%A8%20sed%20%E5%92%8C%20find%20%E6%89%A7%E8%A1%8C%E7%9B%AE%E5%BD%95%E4%B8%8B%E7%9A%84%E6%89%80%E6%9C%89%E6%96%87%E4%BB%B6.png)
我正在尝试使用find
来执行目录下的所有文件。我有一个sed
脚本,它将用 替换所有#
实例//
。
假设我的目录是,/path/to/directory
并且它包含file1
、、file2
。file3
使用find
和sed
:
find /path/to/directory -type f -exec sed -f file.sed {} \;
我如何让它运行下的所有文件( file1
,,file2
)?file3
path/to/directory
答案1
您的find
命令看起来不错,应该可以工作,前提是sed
中的命令file.sed
正确。由于您没有向我们展示,我们无法确定它是否正确,因此,如果将所有 实例替换为file.sed
,则其内容应如下所示:#
//
's|#|//|g'
请注意,为了便于阅读|
,使用 而不是 来作为分隔符/
(我们不必/
为了替换而对每一个 进行转义)。
您还需要做的是使用标志来修改文件-i
sed
。
所以你的命令应该是:
find /path/to/directory -type f -exec sed -i -f file.sed {} \;
然而,对于这样一个简单的替换,使用sed
文件似乎有点过头了。在这种情况下,我将运行find
以下命令:
find /path/to/directory -type f -exec sed -i -e 's|#|//|g' {} \;