find是Unix/Linux命令行工具箱中最棒的工具之一,该命令对于编写shell脚本所起到的功用不可小视。
工作方式
find命令的工作方式如下:沿着文件层次结构向下遍历,匹配符合条件的文件,执行相应的操作。
使用方法
$ find base_path
base_path可以是任意路径(例如/home/slynux),find会从该位置开始向下查找。
$ find . -print
# 打印文件和目录的列表
.指定当前目录,..指定父目录。这是Unix文件系统中的约定用法。
-print指明打印出匹配文件的文件名(路径)。
根据文件名或正则表达式进行搜索
选项-name的参数指定了文件名所必须匹配的字符串。我们可以将通配符作为参数使用。*.txt能够匹配所有以.txt结尾的文件名。
$ find /home/slynux -name "*.txt" -print
find命令有一个选项 -iname(忽略字母大小写),该选项的作用和 -name类似,只不过在匹配名字时会忽略大小写。
否定参数
find也可以用“!”否定参数的含义。例如:
$ find . ! -name "*.txt" -print
根据文件类型搜索
Unix类系统将一切都视为文件。文件具有不同的类型,例如普通文件、目录、字符设备、块设备、符号链接、硬链接、套接字以及FIFO等。
-type可以对文件搜索进行过滤。借助这个选项,我们可以为find命令指明特定的文件匹配类型。
例如,只列出所有的目录:
$ find . -type d -print
文件类型与类型参数对照表
文件类型 | 类型参数 |
---|---|
普通文件 | f |
符号链接 | l |
目录 | d |
字符设备 | c |
块设备 | b |
套接字 | s |
FIFO | p |