记录使用 linux find 和 sed 命令找到的文件

记录使用 linux find 和 sed 命令找到的文件

我有一个包含 txt、html、jpg 和 png 文件的文件夹。
现在我想检查所有基于文本的文件(txt 和 html)并开始搜索和替换。
我执行了以下操作并且运行良好:

find ./ -iregex '.*\.\(txt\|html\)$' -exec sed -i 's/search/replace/g' {} +

但现在我还想记录执行替换的文件。
假设我的文件夹中有五个 txt 和/或 html 文件。但只有其中两个会有一些替换,因为字符串search就在其中。
因此,在命令之后,我想要一个日志文件(例如myLog.log),其中打印两个文件(完整路径)。

但我怎样才能实现这样的命令呢?
sed命令没有这样的参数/选项。

答案1

您必须先搜索search模式,然后sed搜索 和日志。

尝试(为了可读性换行)

find ./ -iregex '.*\.\(txt\|html\)$' \
    -exec grep -q search {} \;  \
    -print \
    -exec sed -i 's/search/replace/g' {} + \
    > my-sed.log

在哪里

  • searchin-exec grep -q search {} \;是您的搜索模式。请注意,您不能使用+who will match 多个文件。
  • -print打印匹配的文件,从而可以记录

相关内容