我们已经熟悉windows下的文件搜索功能,但在linux下的文本界面开发程序时,如果不知道实现同样功能的命令往往让人感到不是很愉快。现在我就介绍一下在这种情况下如何进行搜索操作的find命令。
find命令能完成在指定的目录下完成查找指定文件的功能。其命令格式如下:
find PATH -option 参数 [-print] [-exec 命令 {} \;]
PATH:为要搜索文件的目录。
-option 参数:用来控制搜索方式,具体如下(以下只给我常用的):
-name "文件名(可以有通配符,*等)":指令查找名。
-prune 目录:指出搜索时不搜索该目录。
-user 用户名:按用户名搜索。
-mtime +n或-n:按时间搜索,+n:表示n天之前的;-n:表示今天到n天前之间的。
-type 文件类型:按指定文件类型搜索。文件类型包括:b:块设备文件;c:字符设备文件;f:普通文件;l:符号连接;d:目录;p:管道。
-print:将搜索结果输出到标准输出。
例子:在root以及子目录查找不包括目录/root/bin的,greek用户的,文件类型为普通文件的,3天之前的名为test-find.c的文件,并将结构输出,find命令如下:
find / -name "test-find.c" -type f -mtime +3 -user greek -prune /root/bin -print
很简单吧。:)
下面看一下exec选项:
-exec:对搜索的结构指令指定的shell命令。注意格式要正确:"-exec 命令 {} \;",在}和\之间一定要有空格才行。
例子:对上述例子搜索出来的文件进行删除操作,命令如下:
find / -name "test-find.c" -type f -mtime +3 -user greek -prune /root/bin -exec rm {} \;
好了,find命令常用的用法已经说的差不多了,如果你已经掌握,那么你会发现这个比window下的搜索好用的多。还是自己感受吧。
【编辑推荐】