目录

一、find——快速在指定范围内查找文件

find和xargs结合使用很方便:

二、更快速地定位文件——locate命令


一、find——快速在指定范围内查找文件

基本语法如下:

find 【option】【path】【expression】

例如:希望在/usr/bin/目录下查找zip文件:

find  /usr/bin/ -name zip -print

从上面的例子我们可以看出以下三点:

find命令需要一个路径作为查找的范围,所以要查找整个文件系统的话,直接指定“/”即可。

-print表示将结果输出标准输出也就是我们看到的屏幕上。

-name选项指定了文件名,可以结合通配符使用,比如-name *.c就是列出该目录下的所有c程序文件。-name的还可以换成其他参数,如下:

示例1 将当前目录及其子目录所有最近 20 天内更新过的文件列出:

# find . -ctime  20 -print 

补充:

-mtime +1 #表示文件修改时间为大于1天的文件,即距离当前时间2天(48小时)之外的文件

-mtime 1  #表示文件修改时间距离当前为1天的文件,即距离当前时间1天(24小时-48小时)的文件。

-mtime 0  #表示文件修改时间距离当前为0天的文件,即距离当前时间不到1天(24小时)以内的文件。

-mtime -1 #表示文件修改时间为小于1天的文件,即距离当前时间1天(24小时)之内的文件

示例2:如果出现权限不够,find前面加个sudo就可以了 

如下就看到文件在哪里了: 

find命令还可以指定文件的类型,在linux中,包括目录和设备都以文件的形式表现,可以使用-type选项来定位特殊的文件类型。例如在/etc/目录中查找名叫init.d的目录:

find /etc/ -name init.d -type d -print

-type后可跟的参数如下:

b块设备文件
d目录文件
c字符设备文件
f普通文件
p命名管道
l符号链接
ssocket

find和xargs结合使用很方便:

//比如下面这条命令的意思就是找出名字为“202301”开头的文件,然后删除
sudo find -type d -name "202301*" -print0 |xargs -0 rm -rf

xargs的作用就是可以让命令行同时执行两条语句

比如这样子:

find / -perm +700 |ls -l       #这个命令是错误的
find / -perm +700 |xargs ls -l   #这样才是正确的

根据文件的修改时间,删除5天前的文件

find ./ -mtime +5 |xargs rm -rf

二、更快速地定位文件——locate命令

当用户完全不记得自己的文件放在哪里的时候。可以用locate命令示例:

locate *.ini

或者locate 文件名 

搜索结果非常快。

locate工作原理:locate并没有进入到子目录搜索,而是通过检索文件名数据库来确定文件的位置。locate命令自动建立整个文件名数据库,不需要用户插手。

Logo

更多推荐