Linux 命令之 locate -- 文件查找工具(查找文件/搜索文件)
生活随笔
收集整理的這篇文章主要介紹了
Linux 命令之 locate -- 文件查找工具(查找文件/搜索文件)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一、命令介紹
- 二、相關文件說明
- 配置文件 updatedb.conf
- 三、更新數據庫
- 四、常用選項
- 五、命令示例
- 搜索文件名以指定字符串開頭的文件
- 查找名稱中含有指定字符串的文件
- 使用正則表達式查找特定條件的文件
一、命令介紹
locate 命令用來查找文件或目錄。 locate 命令要比 find -name 快得多,原因在于它不會深入到文件系統中去搜索具體目錄,而是搜索一個索引數據庫 /var/lib/mlocate/mlocate.db 。這個數據庫存放著系統中的所有文件信息。Linux 系統自動創建這個數據庫,并且每天自動更新一次,因此,我們在用 whereis 和 locate 查找文件時,有時會找到已經被刪除的數據,或者剛剛建立文件,卻無法查找到,原因就是因為數據庫文件沒有被更新。為了避免這種情況,可以在使用 locate 之前,先使用 updatedb 命令,手動更新數據庫。
locate 可以指定具體名稱、通配符、正則表達式來查找符合范本樣式的文件和目錄。
二、相關文件說明
| /usr/bin/updatedb | 主要用來更新數據庫,默認每天執行一次,通過 crontab 自動完成的,該程序會開啟一個名為 crond 的守護進程 |
| /etc/crontab | crontab 的配置文件,可以設置程序 updatedb 的執行周期等 |
| /etc/updatedb.conf | updatedb 的配置文件 |
| /usr/bin/locate | 命令文件的位置 |
| /var/lib/mlocate/mlocate.db | 存放文件信息的數據庫文件。版本不同,文件名和位置會有所不同,有的版本是 /var/lib/locatedb,有的版本是 /var/lib/slocate/slocate.db |
配置文件 updatedb.conf
[root@htlwk0001host ~]# cat /etc/updatedb.conf PRUNE_BIND_MOUNTS = "yes" PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset debugfs devpts ecryptfs exofs fuse fuse.sshfs fusectl gfs gfs2 gpfs hugetlbfs inotifyfs iso9660 jffs2 lustre mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs rpc_pipefs securityfs selinuxfs sfs sockfs sysfs tmpfs ubifs udf usbfs ceph fuse.ceph" PRUNENAMES = ".git .hg .svn .bzr .arch-ids {arch} CVS" PRUNEPATHS = "/afs /media /mnt /net /sfs /tmp /udev /var/cache/ccache /var/lib/yum/yumdb /var/lib/dnf/yumdb /var/spool/cups /var/spool/squid /var/tmp /var/lib/ceph"注:
三、更新數據庫
[root@htlwk0001host ~]# updatedb四、常用選項
| -b 或 --basename | 僅匹配路徑名的基本名稱 |
| -c 或 --count | 只輸出找到的條目數量 |
| -d 或 --database <DBPATH> | 使用 DBPATH 指定的數據庫,而不是默認數據庫 /var/lib/mlocate/mlocate.db |
| -e 或 --existing | 僅打印 locate 運行時存在的文件的條目,僅打印當前現有文件的條目 |
| -L 或 --follow | 檢查文件是否存在時,會跟蹤符號鏈接,也就是說不把符號鏈接當成獨立的文件進行檢查,而是去檢查鏈接文件所指向的源文件 |
| -P 或 --nofollow 或 -H | When checking whether files exist (if the --existing option is specified), do not follow trailing symbolic links. This causes broken symbolic links to be reported like other files. 檢查文件存在時不跟蹤符號鏈接,也就是說將符號鏈接也當成獨立文件進行檢索,這和選項 --follow 正好相反 |
| -w 或 --wholename | match whole path name (default) |
| -i 或 --ignore-case | 忽略大小寫 |
| -l -n <num> 或 --limit -n <num> | 將輸出(或計數)限制為 num 個條目 |
| -m 或 --mmap | Ignored for compatibility with BSD and GNU locate. |
| -s 或 --stdio | Ignored for compatibility with BSD and GNU locate. |
| -0 或 --null | 在輸出中使用 NUL 分隔條目 |
| -S 或 --statistics | 將每個讀取數據庫的統計信息寫入標準輸出,而不是搜索文件并成功退出 |
| -q 或 --quiet | 不輸出有關讀取和處理數據庫時遇到的錯誤的消息。 |
| -r 或 --regexp <REGEXP> | 使用基本正則表達式 |
| --regex | 使用擴展正則表達式 |
| -V 或 --version | 顯示版本信息 |
| -h 或 --help | 顯示幫助 |
五、命令示例
搜索文件名以指定字符串開頭的文件
搜索 /etc 目錄下所有以 sh 開頭的文件:
[root@linuxcool ~]# locate /etc/sh/etc/shadow/etc/shadow-/etc/shells查找名稱中含有指定字符串的文件
查找名稱中含有關鍵詞 updatedb 的文件:
[root@htlwk0001host ~]# locate updatedb /etc/updatedb.conf /usr/bin/updatedb /usr/lib/systemd/system/mlocate-updatedb.service /usr/lib/systemd/system/mlocate-updatedb.timer /usr/libexec/mlocate-run-updatedb /usr/share/man/man5/updatedb.conf.5.gz /usr/share/man/man8/updatedb.8.gz /usr/share/vim/vim80/ftplugin/updatedb.vim /usr/share/vim/vim80/syntax/updatedb.vim注:這不是執行更新命令,后面的 updatedb 是搜索的關鍵詞
使用正則表達式查找特定條件的文件
例如,查找以 /var/lib/rpm 開頭的文件:
[root@localhost ~]# locate -r ^/var/lib/rpm查找 etc.conf 結尾的文件:
[root@localhost ~]# locate -r etc.conf$總結
以上是生活随笔為你收集整理的Linux 命令之 locate -- 文件查找工具(查找文件/搜索文件)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 消磁石怎么给水晶消磁(买水晶送的消磁石是
- 下一篇: 用电脑发飞信收钱吗(飞信是什么收费吗,如