CenOS 檔案搜尋find
阿新 • • 發佈:2019-01-07
1、檔案搜尋,內建的的命令是find
用法: find [查詢路徑] 尋找條件 操作 預設路徑為當前目錄;預設表示式為 -print
2、主要引數:
-name 匹配名稱 -perm 匹配許可權(mode為完全匹配,-mode 為包含即可) -user 匹配所有者 -group 匹配所有組 -mtime -n +n 匹配修改內容的時間(-n指 n天以內,+n指 n天以前) -atime -n +n 匹配訪問檔案的時間(-n指 n天以內,+n指 n天以前) -ctime -n +n 匹配修改檔案許可權的時間(-n指 n天以內,+n指 n天以前) -nouser 匹配無所有者的檔案 -nogroup 匹配無所有組的檔案 -newer f1 !f2 匹配比檔案 f1新但比 f2舊的檔案 --type b/d/c/p/l/f 匹配檔案型別(後面的字母引數依次表示塊裝置、目錄、字元道、連結檔案、文字檔案) -size 匹配檔案的大小(+50KB 為查詢超過 50KB 的檔案,而-50KB小於50KB的檔案) -prune 忽略某個目錄 -exec …… {}\; find命令對匹配的檔案執行該引數所給出的shell命令。相應命令的形式為'command' { } \;,注意{ }和\;之間的空格,{}表示查找出來的沒一個檔案,結尾必須是"\;"
3、按名字查詢
在/opt目錄下查詢elasticsearch的配置檔案
[[email protected] ~]# find /opt -name "elastic*.yml" /opt/elasticsearch-6.5.1/config/elasticsearch.yml
查詢過程中出現“許可權不夠”的提示:
[[email protected] ~]$ find /opt -name "elastic*.yml"
find: ‘/opt/modules/hadoop-3.1.0/logs/userlogs/application_1527345950418_0001_DEL_1527434392341’: 許可權不夠
find: ‘/opt/data/tmp/dfs/data’: 許可權不夠
find: ‘/opt/data/tmp/nm-local-dir/usercache_DEL_1527434391968/root’: 許可權不夠
find: ‘/opt/data/tmp/nm-local-dir/nmPrivate’: 許可權不夠
find: ‘/opt/data/tmp/nm-local-dir/usercache/hadoop’: 許可權不夠
/opt/elasticsearch-6.5.1/config/elasticsearch.yml
避免因為許可權不夠的提示,把查詢錯誤提示轉移到特定的目錄中去。
[[email protected] ~]$ find /opt -name "elastic*.yml" 2> /dev/null
/opt/elasticsearch-6.5.1/config/elasticsearch.yml
4、按檔案大小查詢
查詢/home下大於10M的檔案
[[email protected] ~]# find /home -size +10M /home/data/kafka_2.12-2.0.0.tgz
查詢小於1k的檔案 [[email protected] ~]# find /home -size -1k
5、與,或條件,and,or
[[email protected] ~]# find /opt -name "*yml" -and -name "elastic*" /opt/elasticsearch-6.5.1/config/elasticsearch.yml
find / -user fred -or -user georg
6、其他
find / -amin -10 # 查詢在系統中最後10分鐘訪問的檔案 find / -atime -2 # 查詢在系統中最後48小時訪問的檔案 find / -empty # 查詢在系統中為空的檔案或者資料夾 find / -group cat # 查詢在系統中屬於 groupcat的檔案 find / -mmin -5 # 查詢在系統中最後5分鐘裡修改過的檔案 find / -mtime -1 #查詢在系統中最後24小時裡修改過的檔案 find / -nouser #查詢在系統中屬於作廢使用者的檔案 find / -user fred #查詢在系統中屬於FRED這個使用者的檔案
在find命令中還可以使用“非”的關係來查詢檔案,如果我們要在/tmp目錄中查詢所有不屬於panda的檔案,使用一個簡單的
find /tmp ! -user panda
查詢並顯示檔案的方法
find / -name "httpd.conf" -ls
find . -perm -007 -exec ls -l {} \; #查所有使用者都可讀寫執行的檔案同-perm 777
find . -name "[a-z][a-z][0–9][0–9].txt" -print #查以兩個小寫字母和兩個數字開頭的txt檔案
find /home -uid +501 列出/home目錄內使用者的識別碼大於501的檔案或目錄
find /home -gid 501 列出/home內組id為501的檔案或目錄
7、exec引數,{}表示查找出來的沒一個檔案,結尾必須是"\;"
在/opt目錄下查詢檔案,並拷貝到但前目錄下
[[email protected] ~]# find /opt -name "elastic*.yml" -exec cp {} ./ \;
找到檔案並用ls -lh顯示
[[email protected] ~]# find /opt -name "*.conf" -exec ls -lh {} \; -rw-r--r--. 1 hadoop hadoop 1.1K 3月 30 2018 /opt/modules/hadoop-3.1.0/share/hadoop/yarn/yarn-service-examples/httpd/httpd-proxy.conf -rw-r--r--. 1 hadoop hadoop 1009 3月 30 2018 /opt/modules/hadoop-3.1.0/share/hadoop/yarn/yarn-service-examples/httpd-no-dns/httpd-proxy-no-dns.conf