搜索文件
和新建文件类似的,在终端中提供了多种方式进行文件的搜索,常用的也是三种方式。
- which命令
对于which指令来说,首先需要注意的是which命令只能搜索PATH环境变量中的内容,比如搜索一个命令程序所在的具体路径,如果该命令存在于PATH环境变量中,则能搜索到,否则搜索不到。也由于这点,使得which命令的使用频率并不是很高。
#使用which命令搜索test命令所在的绝对路径
#test命令是确实存在的命令
os@DESKTOP-2DHQBVS:~$ which test
/usr/bin/test
- locate命令
locate命令的使用方法同样简单, 只需要在命令之后添加上指定的文件名称即可。
#使用locate命令搜索“test”,输出结果中,可见其输出了所有包含test关键词的路径
os@DESKTOP-2DHQBVS:~$ locate test
/etc/popularity-contest.conf
/etc/cron.d/popularity-contest
/etc/cron.daily/popularity-contest
/etc/profile.d/Z99-cloud-locale-test.sh
/usr/bin/grub-fstest
/usr/bin/test
/usr/lib/git-core/git-remote-testsvn
/usr/lib/python3/dist-packages/jinja2/tests.py
/usr/lib/python3/dist-packages/jinja2/__pycache__/tests.cpython-35.pyc
/usr/lib/python3/dist-packages/markupsafe/tests.py
。。。。。。
lcoate命令最大的特点是搜索速度快,因为locate命令在搜索文件时并不是在磁盘上进行搜索。locate命令会不定期的对磁盘上所有的文件进行一次扫描,生成一个数据库,当需要查找文件时,只需要查找数据库就可以,所以速度很快。
不同的Linux发行版,数据库的更新频率不同,可能一天,也可能一周。所以,新建的文件,往往不能立刻就能搜索到。这时候可以使用手动更新的方法更新数据库。
#使用updatedb命令进行数据库的手动更新
#需要注意的是,该命令的使用需要管理员权限
#该命令耗时较长
os@DESKTOP-2DHQBVS:~$sudo updatedb
- find命令
find命令是终端中强大的文件查找命令,能够使用不同的方式进行文件的搜索。
#直接搜索文件名称
#注意,该操作,只在当前文件夹内进行搜索
os@DESKTOP-2DHQBVS:~$ find tedu.txt
tedu.txt
#输出最近三天修改的文件
os@DESKTOP-2DHQBVS:~$ find ~ -mtime -3
/home/os
/home/os/.nano
/home/os/tedu.txt
/home/os/tedu_1.txt
/home/os/tedu_2.txt
/home/os/tedu_3.txt
/home/os/tedu_nano.txt
除了mtime修改时间选项外,还有atime(访问时间)、ctime(状态改变时间)、newer(相对某文件更新的时间)等时间选项。上述示例中的时间为“-3”,代表三天内,如果是“+3”,则代表三天前,“3”则代表向前数第3天,需要注意正负符号的使用,否则可能搜索不到文件。
find命令除了根据时间查询外,还可以根据文件名、文件类型、文件所属用户、文件大小等信息来查找,使用方法如下所示。
#查找某路径下属于某用户(此处为os)的所有文件
os@tedu:~$ find /home -user os
#由于输出文件比较多,此处不再展示,请读者自行尝试查看
#根据文件名查找文件路径
os@tedu:~$ find -name tedu_cp.txt
#未添加查找路径的情况下,默认在当前目录搜索,输出结果为当前目录的相对目录
./tedu_cp.txt
#添加查找路径的情况下,在指定目录中查找,输出结果以指定目录开始
os@tedu:~$ find /home -name tedu_cp.txt
/home/os/tedu_cp.txt
#查找当前目录下所有的管道类型文件
os@tedu:~$ find -type p
#输出的管道类型的文件
./tedu_fifo