一、说明

find命令是一个很常用的命令,用于在指定路径下查找文件,相像的命令还有which、whereis、locate等。

扩充:

1.which命令只会查找环境变量中的文件位置,比如:

$ which find
/usr/bin/find    # find 命令所在路径

2.locate命令是在mlocate数据库中搜索。

locate与find不同,find是去硬碟找,locate只在/var/lib/mlocate资料库中找。locate的速率比find快,由于它并不是真的查找,而是查数据库,通常文件数据库在/var/lib/mlocate/mlocate.db中,所以locate的查找并不是实时的,而是以数据库的更新为准,通常是系统自己维护,也可以手工升级数据库。

命令括号怎么打_linux括号的使用_linux find命令 括号

3.whereis只能用于查找二补码文件、源代码文件和man指南页,比如

$ whereis -b bash        # 显示 bash 命令的二进制程序  
bash: /bin/bash /etc/bash.bashrc /usr/share/bash    # bash命令的二进制程序的地址  
$ whereis -m bash        # 显示 bash 命令的帮助文件  
bash: /usr/share/man/man1/bash.1.gz                # bash 命令的帮助文件地址  

二、语法

find [路径] -命令参数 [输出形式]

1.路径

告诉find命令在哪些路径下查找文件,可以设置多个,以空格隔开,不设置则默认为当前路径sogou pinyin linuxlinux系统介绍,路径参数必须在命令参数前。

2.命令参数

告诉find命令按照哪些样的条件查找文件linux find命令 括号,比如:-name、-perm、-user、-type等等,前面再详尽说明。

3.输出方式

告诉find命令以哪些样的方式输出查找结果,不设置则默认为-print,即直接复印查找结果到屏幕。

其它输出方式还有-print、-printf、-print0、-exec、-ok、-ls、-delete等,具体前面说明。

三、参数解读1.命令参数

常用的命令参数有:

2.输出方式3.-exec使用句型

句型方式:

-exec (command) {} ;

示例:

# 在当前路径下搜索后缀为 txt 的文件,并对结果执行 basename 操作(只显示文件名)
find . -name "*.txt" -exec basename {} ;
# 在当前路径下搜索后缀为 log 的文件,并对结果执行 rm -f 操作(删除)
find . -name "*.log" -exec rm -f {} ;

四、实例大全1.通过名称查找

# 在 ~ 目录下查找命名为 test.txt 的文件,~ 目录指用户的根目录
find ~ -name “test.txt”
# 在当前目录下查找后缀为 .txt 的文件
find . -name “*.txt”
# 在 ~/path1 和 ~/path2 两个目录下查找命名为 test.txt 的文件,~ 目录指用户的根目录
find ~/path1 ~/path2 -name “test.txt”

2.通过文件权限查找

命令括号怎么打_linux find命令 括号_linux括号的使用

# 在当前目录下查找权限为 666 的文件
find . -perm 666
# 在当前目录下查找权限为 777 并且后缀为 .sh 的文件
find . -perm 777 -name "*.sh"

3.依照文件类型查找

# 在当前目录下查找类型为 "d"(文件夹)的文件
find . -type d
# 在当前目录下查找类型不为 "d"(文件夹)的文件
find . ! -type d

4.依照文件所属用户和用户组查找

# 在当前目录下查找没有归属用户的文件
find . -nouser
# 在 /home/afei/demo 目录下查找用户组为 users,所属用户为 afei 的文件
find /home/afei/demo -user afei -group users

5.依照文件大小查找

# 在当前目录下查找文件大小小于 10 块的文件,没有单位默认为块,一块等于 512b
find . -size -10
# 在 ~/Downloads 目录下查找文件大小大于 100M 的文件
find ~/Downloads -size +100M

6.按照更改时间查找

# 在当前目录下查找 5 天之内修改过的文件,- 表示之内,即修改时间没超过 5 天
find . -mtime -5
# 在当前目录下查找 5 分钟之前修改过的文件,+ 表示之前,即修改时间超过了 5 分钟
find . -mmin +5

7.组合条件查找

# 在当前目录下查找后缀为 .sh 或者 .txt 的文件
find . ( -name "*.sh" -o -name "*.txt" )
# 在当前目录下修改时间在 1 天以内,5 分钟以外的文件
find . ( -mtime -1 -a -mmin +10 )
# 在当前目录下查找类型不为 "d"(文件夹)的文件
find . ! -type d

8.输出方式

-exec前面追随一个命令linux find命令 括号,前面的{}表示上面查询的结果文件,末尾为;且一定要留有一个空格

# 在当前目录下查找后缀为 .txt 的文件,并对查找结果执行 ls -la 的操作来显示
find . -name "*.txt" -exec ls -la {} ;
# 在当前目录下查找后缀为 .txt 的文件,并对查找结果执行移动到上一层的操作
find . -name "*.txt" -exec mv {} .. ;
# 在当前目录下查找后缀为 .txt 的文件,并在结果中查找含有 "afei" 字符的文件
find . -name ".txt" -exec grep -lnR "afei" {} ;
# 在当前目录下查找后缀为 .log 的文件,并删除这些文件
find . -name "*.log" -delete
# 在当前目录下查找后缀为 .txt,修改时间在 1 天以内的文件,并使用 ls 显示
find . -name "*.txt" -mtime -1 -ls

Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复