grep -r 不可用;现在怎么办?
grep -r not available; what now?
我正在尝试递归搜索当前文件夹中包含的所有文件中的字符串,我正在其中执行 grep。但是这台主机上的 grep
似乎太旧了。下面是它的一些用法。
>> grep -r "some string here" *.*
grep: illegal option -- r
usage: grep [-E|-F] [-c|-l|-q] [-bhinsvwx] -e pattern_list...
[-f pattern_file...] [file...]
usage: grep [-E|-F] [-c|-l|-q] [-bhinsvwx] [-e pattern_list...]
-f pattern_file... [file...]
usage: grep [-E|-F] [-c|-l|-q] [-bhinsvwx] pattern [file...]
那么我应该怎么做呢?
假设您有 find
,
find . -type f -exec grep "some string here" {} \;
另请注意,您的通配符只会匹配名称中包含点的文件;我认为这是一个错误,但如果不是,请在 -exec
之前添加 -name '*.*'
(或者如果您打算搜索名称包含点的目录,请将 find .
更改为 find *.*
,这就是您的 grep
命令实际执行的操作。
旧的 DOS 8+3 通配符 *.*
将匹配所有文件,因为即使在没有扩展名的文件名中,点也是隐含的。所有文件(不以点开头)的 Unix 通配符只是 *
.
使用 xargs
或支持 -exec ... +
的更新的 find
可以提高效率
我正在尝试递归搜索当前文件夹中包含的所有文件中的字符串,我正在其中执行 grep。但是这台主机上的 grep
似乎太旧了。下面是它的一些用法。
>> grep -r "some string here" *.*
grep: illegal option -- r
usage: grep [-E|-F] [-c|-l|-q] [-bhinsvwx] -e pattern_list...
[-f pattern_file...] [file...]
usage: grep [-E|-F] [-c|-l|-q] [-bhinsvwx] [-e pattern_list...]
-f pattern_file... [file...]
usage: grep [-E|-F] [-c|-l|-q] [-bhinsvwx] pattern [file...]
那么我应该怎么做呢?
假设您有 find
,
find . -type f -exec grep "some string here" {} \;
另请注意,您的通配符只会匹配名称中包含点的文件;我认为这是一个错误,但如果不是,请在 -exec
之前添加 -name '*.*'
(或者如果您打算搜索名称包含点的目录,请将 find .
更改为 find *.*
,这就是您的 grep
命令实际执行的操作。
旧的 DOS 8+3 通配符 *.*
将匹配所有文件,因为即使在没有扩展名的文件名中,点也是隐含的。所有文件(不以点开头)的 Unix 通配符只是 *
.
使用 xargs
或支持 -exec ... +
find
可以提高效率