Linux 在文件和子目录中搜索

Linux 在文件和子目录中搜索

对,需要一个脚本/命令来列出所有包含模式/字符串的.php 文件。

它应该查看当前目录及其所有子目录。

如果它显示行号,例如:

my new command 
./www/index.php Line 12
./www/lib/config.php Line 123

另外,是否可以搜索并替换每个文件中具有此模式的行?

答案1

grep可以自行完成此操作:

grep -rn --include='*.php' "pattern" .

答案2

查找 . -name '*.php' -print0 | xargs -0 grep -n “模式”

答案3

我认为下面将进行搜索和替换,但请确保您先测试这一点,因为我还没有:-)

find . -type f -name '*.php' -print0 | xargs -0 sed -i '.bak' -e 's/foo/bar/g'

这将在编辑每个文件之前通过创建 filename.php.bak 文件对其进行备份,并且将更新所有文件的时间戳。它将“foo”替换为“bar”。这对于包含空格的文件名也应该是安全的。

答案4

这不能代替模式吗?

查找 . -name "*.php" -exec sed -i".bak" 's/pattern/replace/g' {} \;

但非常危险!一定要保持图案的独特性。:-)

相关内容