gpt4 book ai didi

linux - 查找包含字符串的文件,但几个文件夹除外

转载 作者:太空宇宙 更新时间:2023-11-04 10:35:39 25 4
gpt4 key购买 nike

我正在尝试查找一些文件,我已经为它编写了一个 bash 脚本并以这种方式使用它 - ./findme.sh "before",但效果不佳。有什么问题?怎样改写正确,更美化?

#!/bin/bash
string=$1
clear
find . -name "*.*" ! -path "./node_modules" \
! -path "./bower_components" \
! -path "./public_lib/bootstrap" \
! -path "./public_lib/jquery" \
! -path "./public_lib/lib/bootstrap" \
! -path "./public_lib/lib/jquery" \
-print | xargs grep -o -r -n -C 3 --color=auto "$string" ./

echo "Search end!"
exit 0

最佳答案

您可以为此正确使用 grep:

#!/bin/bash
grep -rnC 3 --color=auto \
--exclude-dir={node_modules,bower_components} \
--exclude-dir=public_lib/{,lib/}{bootstrap,jquery} -- "$1" .

这将递归搜索所有文件以查找 $1 并显示行号和匹配项上下三行。

如果你想跟随符号链接(symbolic link),你应该使用 -R 而不是 -r

--exclude-dir={node_modules,bower_components} 使用大括号扩展并将扩展为:

--exclude-dir=node_modules --exclude-dir=bower_components

更高级的--exclude-dir=public_lib/{,lib/}{bootstrap,jquery},将扩展为:

--exclude-dir=public_lib/bootstrap --exclude-dir=public_lib/jquery \
--exclude-dir=public_lib/lib/bootstrap --exclude-dir=public_lib/lib/jquery

添加了反斜杠和换行符以进行说明。

关于linux - 查找包含字符串的文件,但几个文件夹除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37697978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com