10.6 当表达式均为true时显示结果(AND)

find -a

find命令的一个重要特点就是能够把多个选项组合起来,以便更严格地定义搜索条件。可以用-a(或-and)把任意多个选项串接在一起。例如,如果要找出世界上最棒的摇滚乐队Rolling Stones演奏的每首歌曲,你可能会使用-name "Rolling_Stones*",但这样做并不一定奏效。有些文件夹的名称中可能有Rolling_Stones,也可能有一两个带有乐队名称的软链接,因此,还需要使用-type f。把这两个条件按以下方式组合起来:

  1. $ find . -name "Rolling_Stones*" -a -type f
  2. 1968_Beggars_Banquet/03_-_Dear_Doctor.mp3
  3. 1968_Beggars_Banquet/01_-_Sympathy_For_The_Devil.mp3
  4. 1968_Beggars_Banquet/02_-_No_Expectations.mp3
  5. 1968_Beggars_Banquet/04_-_Parachute_Woman.mp3
  6. 1968_Beggars_Banquet/05_-_Jig-Saw_Puzzle.mp3
  7. 1968_Beggars_Banquet/06_-_Street_Fighting_Man.mp3

结果够酷吧!那么我们有多少首Rolling Stones乐队的歌曲呢?把find命令的结果通过管道传递给wc(代表word count),但还要使用-l选项,这样最终结果统计的是行数,而不是字数,如下所示:

  1. $ find . -name "Rolling_Stones*" -a -type f | wc -l
  2. 317

317首Rolling Stones乐队的歌曲。真太棒了!在这个例子中,你总是能够得到想要的东西①。

① 此句话的原文是“…, you can always get what you want.”——译者注


说明 如果你对最后一句话的含义没什么感觉的话,可以现在就亲自聆听一下Let It Bleed这张专辑。别忘了把声音开大点。