##上一篇的文件唯一标识号写错了,应该是"inode"
【承上启下】【场景驱动】
1、在当前目录下,我已经知道如何创建目录中存在的文件,那么如果当前目录文件太多时,怎么快速找到我想要的文件呢?
#find PATH [condition] >此命令可用于快速查找目标目录下符合选项的文件,常结合以下选项进行快速查找
- -name >此选项可用于根据文件名进行文件查询
find /root/* -name 10*
/root/script/mg/100_sum.sh
- -size >此选项可用于根据文件大小进行文件查询
find /root/* -size +10k
/root/install.log
- -group >此选项可用于根据文件的属组进行文件查询
find /root/* -group root
/root/anaconda-ks.cfg
/root/install.log
- -user >此选项可用于根据文件的属主进行文件查询
find /root/* -user root
/root/anaconda-ks.cfg
/root/install.log
- -type >此选项可根据文件的类型进行文件查询,常见文件类型有【d|f|l】,分别为目录文件、普通文件、链接文件
find /root/* -type d
/root/kk
/root/kk/aa
/root/lianxi
- -cmin >此选项可根据文件的访问时间进行文件查询,常搭配【-num1 | +num2】分别表示为在距离当前时间num1分钟内被访问的文件、表示在距离当前时间,访问时间超过num2分钟的文件;
find /root/* -amin +10
/root/anaconda-ks.cfg
/root/install.log
以上选项是find命令的常用选项,更详细的的内容可使用
#man find 进行查看
…
2、【场景驱动学习】在我找到了目标文件后,是否有命令让我直接对这些目标文件进行操作呢?此时find命令为我们提供了可搭配后续操作的命令选项,命令如下:
**#find PATH [condition] -[exec | ok] command {} ;**此命令可用于对目标文件进行进一步的操作,比如:删除、复制、移动等等
【注意:命令中"{}"代表一个文件名,管道每次只会向command传一个文件名,此时可将后续程序理解为:command filename1】
- 【-exec|-ok】的区别:-exec :无需交互,程序会自动执行command;
-ok:需要交互确认,每对一个文件执行command前,程序都会询问是否执行,只有键入“y”后,程序才会执行command - -exec命令示例:
find /root/* -amin +20 -exec ls -la {} ;
-rw-------. 1 root root 1449 9月 23 20:49 /root/anaconda-ks.cfg
-rw-r–r--. 1 root root 28425 9月 23 20:49 /root/install.log
3. -ok命令示例:
find /root/* -amin +20 -ok ls -la {} ;
< ls … /root/anaconda-ks.cfg > ? y
-rw-------. 1 root root 1449 9月 23 20:49 /root/anaconda-ks.cfg
…
3、【场景驱动学习】除了可用find命令查找文件外,Linux还有其他命令用于查找文件吗?
答:其实我们还可以使用命令locate来进行文件查询
#locate filename >locate命令是根据文件名进行快速查询
【locate与find的区别】:
- locate命令查询文件速度要比find快,原因是locate是基于Linux后台数据库来进行查找的;
- 由于Linux后台数据库并不会对存储系统中的所有文件,比如/tmp目录下的文件就不会存储在后台数据库,所有使用locate是查找不到的;
- 由于Linux后台数据库并不会实时同步Linux中的文件,所以对于新建的文件,需要先同步后台数据库**#updatedb**,然后再执行locate命令
以上就是目前所掌握的文件查找方法