10.5 根据文件类型搜索文件

find -type

find命令最有用的选项就是-type,用于指定想要搜索的对象的类型。还记得UNIX系统中所有东西都是文件吧(在1.1节介绍过),所以其实指定的就是要搜索的文件的类型。表10-2列举了find命令中可以使用的文件类型。 表10-2 根据文件类型搜索文件

文件类型字符 含  义
f普通文件
d目录
l符号(软)链接
b块文件
c字符文件
pFIFO(First In First Out)文件
s套接字

假设要快速查找music盘中Steely Dan的所有专辑,因为所有歌曲文件都是按专辑存放到不同的目录中,所以可以使用-type d搜索文件夹:

  1. $ cd /media/music/Rock
  2. $ find Steely_Dan/ -type d
  3. Steely_Dan/
  4. Steely_Dan/1980_Gaucho
  5. Steely_Dan/1975_Katy_Lied
  6. Steely_Dan/1974_Pretzel_Logic
  7. Steely_Dan/1976_The_Royal_Scam
  8. Steely_Dan/2000_Two_Against_Nature
  9. Steely_Dan/1972_Can't_Buy_A_Thrill
  10. Steely_Dan/1973_Countdown_To_Ecstasy
  11. Steely_Dan/1977_Aja

这样列出结果挺有用,但因为每个专辑目录的名称都以其发行年份作为开始,这样就可以根据年份进行排序,以便得到更精确的信息,如下所示:

  1. $ cd /media/music/Rock
  2. $ find Steely_Dan/ -type d | sort
  3. Steely_Dan/
  4. Steely_Dan/1972_Can't_Buy_A_Thrill
  5. Steely_Dan/1973_Countdown_To_Ecstasy
  6. Steely_Dan/1974_Pretzel_Logic
  7. Steely_Dan/1975_Katy_Lied
  8. Steely_Dan/1976_The_Royal_Scam
  9. Steely_Dan/1977_Aja
  10. Steely_Dan/1980_Gaucho
  11. Steely_Dan/2000_Two_Against_Nature

使用管道符(|)对find命令生成的列表进行过滤,效果非常好。随着你越来越能熟练使用find命令,你会发现用它能够完成的功能也越来越多。