日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux 命令之 locate -- 文件查找工具(查找文件/搜索文件)

發布時間:2023/12/3 linux 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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/crontabcrontab 的配置文件,可以設置程序 updatedb 的執行周期等
/etc/updatedb.confupdatedb 的配置文件
/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"

注:

  • PRUNE_BIND_MOUNTS 設置是否限制搜索,yes 表示限制搜索,no 表示不限制搜索;
  • PRUNEFS 指定排除檢索的文件系統類型,即列出的文件系統類型不進行檢索;
  • PRUNENAMES 指定排除檢索的文件后綴名,即哪些后綴的文件不進行檢索;
  • PRUNEPATHS 指定排除檢索的路徑,即列出的路徑下的文件及子目錄均不會進行檢索,所以 updatedb 之后使用 locate 仍然找不到明明存在的文件,可以在這里檢查下是不是被排除在外了
  • 三、更新數據庫

    [root@htlwk0001host ~]# updatedb

    四、常用選項

    選項說明
    -b 或 --basename僅匹配路徑名的基本名稱
    -c 或 --count只輸出找到的條目數量
    -d 或 --database <DBPATH>使用 DBPATH 指定的數據庫,而不是默認數據庫 /var/lib/mlocate/mlocate.db
    -e 或 --existing僅打印 locate 運行時存在的文件的條目,僅打印當前現有文件的條目
    -L 或 --follow檢查文件是否存在時,會跟蹤符號鏈接,也就是說不把符號鏈接當成獨立的文件進行檢查,而是去檢查鏈接文件所指向的源文件
    -P 或 --nofollow 或 -HWhen 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 或 --wholenamematch whole path name (default)
    -i 或 --ignore-case忽略大小寫
    -l -n <num> 或 --limit -n <num>將輸出(或計數)限制為 num 個條目
    -m 或 --mmapIgnored for compatibility with BSD and GNU locate.
    -s 或 --stdioIgnored 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 -- 文件查找工具(查找文件/搜索文件)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。