仅列出Linux中包含字符串的文件名

仅列出Linux中包含字符串的文件名,linux,Linux,我只想使用Linux命令列出包含字符串的文件名 使用egrep时,将显示字符串的所有实例,可能是整数倍 例如: egrep disco music_file*.txt music_file1.txt music_file2.txt music_file3.txt 可能会显示 music_file1.txt: blah blah blah disco stuff music_file1.txt: disco blah blah blah music_file1.txt: I like

我只想使用Linux命令列出包含字符串的文件名

使用egrep时,将显示字符串的所有实例,可能是整数倍

例如:

egrep disco music_file*.txt
music_file1.txt

music_file2.txt

music_file3.txt
可能会显示

music_file1.txt: blah blah blah disco stuff

music_file1.txt: disco blah blah blah

music_file1.txt: I like to listen to italodisco

music_file2.txt: I like to party to disco

music_file3.txt: Does your dog like disco?
而我想要的只是:

egrep disco music_file*.txt
music_file1.txt

music_file2.txt

music_file3.txt

问题:在Linux中搜索字符串时,如何仅显示每个文件名的一个实例?

-l
添加到您的egrep表达式中:

egrep -l disco music_file*.txt
man grep

-l、 --具有匹配项的文件

抑制正常输出;而是从中打印每个输入文件的名称 通常打印的输出。扫描将停止 在第一场比赛中。(-l由POSIX指定。)


格雷普-我应该为你工作

  grep -l pattern files*.txt
从手册页:

      -l, --files-with-matches
          Suppress  normal  output;  instead  print the name of each input
          file from which output would normally have  been  printed.   The
          scanning  will  stop  on  the  first match.  (-l is specified by
          POSIX.)

在linux exchange上这样做可能更好,除非您希望编写一个这样做的程序?