Linux下搜索文件常用方法
Posted 江海寄余生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下搜索文件常用方法相关的知识,希望对你有一定的参考价值。
- 用which命令查找可以知晓文件的绝对路径
这个命令比较常用,例如查找bin、python、vim、find、cat的绝对路径
[email protected]:~# which find /usr/bin/find [email protected]-172-31-8-212:~# which bash /bin/bash [email protected]-172-31-8-212:~# which python /usr/bin/python [email protected]-172-31-8-212:~# which vim /usr/bin/vim
- whereis查找预先生成的文件列表库中的文件名与相关的文件,格式为:whereis [-bms] 文件名称
-b:只查找二进制文件
-m:支叉子帮助文件(查找man目录下的文件)
-s:支叉子源代码文件
[email protected]:~# whereis ls ls: /bin/ls /usr/share/man/man1/ls.1.gz
模糊查找,whereis命令很少使用
- locate命令查找文件
locate命令也是通过查找预先生成的文件列表库来告诉用户要查找的文件在哪里,后面直接跟文件名,如果没有此命令,需要进行安装,安装命令如下:
yum install -y mlocate
- 使用find命令搜索文件
此命令是使用较多的一个,格式为:find 【路径】 【参数】
# linux文件无创建时间 # Access 使用时间 # Modify 内容修改时间 # Change 状态改变时间(权限、属主) # 时间默认以24小时为单位,当前时间到向前24小时为0天,向前48-72小时为2天 # -and 且 匹配两个条件 参数可以确定时间范围 -mtime +2 -and -mtime -4 # -or 或 匹配任意一个条件 find /etc -name "*http*" # 按文件名查找 find . -type f # 查找某一类型文件 find / -perm # 按照文件权限查找 find / -user # 按照文件属主查找 find / -group # 按照文件所属的组来查找文件 find / -atime -n # 文件使用时间在N天以内 find / -atime +n # 文件使用时间在N天以前 find / -mtime +n # 文件内容改变时间在N天以前 find / -ctime +n # 文件状态改变时间在N天前 find / -mmin +30 # 按分钟查找内容改变 find / -size +1000000c -print # 查找文件长度大于1M字节的文件 find /etc -name "*passwd*" -exec grep "xuesong" {} ; # 按名字查找文件传递给-exec后命令 find . -name ‘t*‘ -exec basename {} ; # 查找文件名,不取路径 find . -type f -name "err*" -exec rename err ERR {} ; # 批量改名(查找err 替换为 ERR {}文件 find 路径 -name *name1* -or -name *name2* # 查找任意一个关键字 find /var/adm -mtime +3 -print #为了在/var/adm目录下查找更改时间在3日以前的文件 find . -newer age.awk ! -newer belts.awk -exec ls -l {} ; #查找更改时间呗文件age.awk新但比文件belts.awk旧的文件 find /etc -type d -print #查找/etc目录下所有的目录 find /etc ! -type d -print #查找/etc下除了目录之外的所有类型的文件 find /etc -type l -print #查找/etc下所有的符号链接文件
实例如下:
find命令实例 简单地使用find命令查找指定目录下的某个文件的方法如下: #find /etc -name inittab /etc/inittab #在当前目录下,查找名称为inittab的文件: #find . -name inittab ./inittab #找出当前目录下,文件名不区分大小写是example的所有文件: $find . -iname example ./example ./Example #找出当前目录下,目录名是tmp的目录: $ find . -type d -name tmp ./tmp #找出当前目录下所有sh文件: $ find . -type f -name "*.sh" ./login.sh ./index.sh #找出当前目录下,文件权限是777的所有文件: $find. -type f -perm 0777 #找出当前目录下,文件权限不是777的所有文件: $ find . -type f ! -perm 777 #找出/etc/目录下所有只读文件: find . -type f ! -perm /a+w #找出你账号的主目录下的所有可执行文件: $ find ~ -type f -perm /a+x #找出/tmp目录下的.log文件并将其删除: $find /tmp/ -type f -name "*.log" -exec rm -f {} ; #找出当前目录下的所有空文件: $find . -type f -empty #找出当前目录下的所有空目录: $find . -type d –empty #找出/tmp目录下的所有隐藏文件: $find /tmp/ -type f -name ".*" #找出/tmp目录下,所有者是root的文件和目录: $find /tmp/ -user root #找出/tmp目录下,用户组是developer的文件和目录: $find /tmp/ -group developer #找出你账号的主目录下,3天前修改的文件: $ find ~ -type f -mtime 3 #找出你账号的主目录下,30天以前修改的所有文件: $ find ~ -type f -mtime +30 #找出你账号的主目录下,3天以内修改的所有文件: $ find ~ -type f -mtime -3 #找出你账号的主目录下,30天以前60天以内修改的所有文件: $ find ~ -type f -mtime +30 -mtime -60 #找出/etc目录下,一小时以内变更过的文件: find /etc -type f –cmin -60 #找出/etc目录下,一小时以内访问过的文件: find /etc -type f -amin -60 #找出你账号的主目录下,大小是50MB的所有文件: $find ~ -type f -size 50MB #找出你账号的主目录下,大于50MB小于100MB的所有文件: $ find ~ -type f -size +50MB -size -100MB #找出你账号的主目录下,大于100MB的文件并将其删除: $ find ~ -type f -size +100MB -exec rm –rf {} ;
以上是关于Linux下搜索文件常用方法的主要内容,如果未能解决你的问题,请参考以下文章