我正在尝试使用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' {} \;