Shell 当有数百个文件时,如何获取包含特定字符串的文件名?
我有一个文件夹,里面有200个文件。我们可以说这些文件名为“abc0”到“abc199”。其中五个文件包含字符串“ez123”,但我不知道是哪一个。我当前尝试查找包含字符串的文件的文件名是:Shell 当有数百个文件时,如何获取包含特定字符串的文件名?,shell,Shell,我有一个文件夹,里面有200个文件。我们可以说这些文件名为“abc0”到“abc199”。其中五个文件包含字符串“ez123”,但我不知道是哪一个。我当前尝试查找包含字符串的文件的文件名是: #!/bin/sh while read FILES do cat $FILES | egrep "ez123" done 我有一个包含目录中所有文件的文件名的文件。然后我执行: ./script < filenames /script
#!/bin/sh
while read FILES
do
cat $FILES | egrep "ez123"
done
我有一个包含目录中所有文件的文件名的文件。然后我执行:
./script < filenames
/script<文件名
这是为我验证包含字符串的文件是否存在,但我仍然没有文件名。关于实现这一目标的最佳方式,有什么想法吗
谢谢试试看
find -type f -exec grep -qs "ez123" {} \; -print
这将使用find
查找当前目录(和子目录)中的所有真实文件,对它们执行grep
({}将被文件名替换,-qs告诉它保持沉默并只设置退出代码),-print将打印出grep在其中找到匹配行的文件名。尝试
find -type f -exec grep -qs "ez123" {} \; -print
这将使用find
查找当前目录(和子目录)中的所有真实文件,对它们执行grep
({}将被文件名替换,-qs告诉它保持沉默并只设置退出代码),-print将打印出grep在其中找到匹配行的文件名。如何:
xargs egrep -l ez123
从stdin读取文件名并打印出匹配的文件名。那么:
xargs egrep -l ez123
find /directory -maxdepth 1 -type f -exec fgrep -l 'ez123' \{\} \;
从stdin读取文件名并打印出匹配的文件名
find /directory -maxdepth 1 -type f -exec fgrep -l 'ez123' \{\} \;
(-maxdepth 1
仅当您只想递归搜索目录而不是树(如果有)时才需要)
fgrep
比grep快一点-l
仅列出匹配的文件名
(-maxdepth 1
仅当您只想递归搜索目录而不是树(如果有)时才需要)
fgrep
比grep快一点-l
仅列出匹配的文件名。您可以尝试
grep -l "ez123" abc*
你可以试试
grep -l "ez123" abc*
谢谢你的反馈,解决了这个问题,从此我能过上幸福的生活!谢谢你的反馈,解决了这个问题,从此我能过上幸福的生活!