好程式設計師雲端計算學習路線分享雲端計算之檔案查詢
好程式設計師雲端計算學習路線系列分享雲端計算之 檔案查詢
grep: 檔案內容過濾
find: 檔案查詢,針對檔名
一、命令檔案
# which ls //從PATH環境變數 (echo $PATH)
# whereis vim
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/htop/bin/:/root/bin
二、任意檔案
A. locate
(查詢的資料庫: /var/lib/mlocate/mlocate.db)
計劃任務:每天自動更新資料庫
/etc/cron.daily/mlocate.cron
手動更新資料庫:updatedb
# locate ifcfg-eth0
# locate ifcfg-enp0s25
locate
updatedb後才能查詢到 非常麻煩 不建議使用
如果沒有 locate 使用YUM直接安裝是不行的。 要查一下在哪個包裡 yum provides locate -→ mlocate → 直接YUM mlocate即可
B. find
find [options] [path...] [
expression
] [action]
===
expression
=== 熟用*萬用字元
按檔名:
[root@tianyun ~]# find /etc
-name "ifcfg-eth0"
name 名字 後面-print 已省略
[root@tianyun ~]# find /etc
-iname "ifcfg-eth0"
//-i忽略大小寫
[root@tianyun ~]# find /etc
-iname "ifcfg-eth*"
按檔案大小:
[root@tianyun ~]# find /etc
-size +5M
//大於5M
[root@tianyun ~]# find /etc
-size 5M
[root@tianyun ~]# find /etc
-size -5M
[root@tianyun ~]# find /etc
-size +5M
-ls
//-ls找到的處理動作 不是平時用的ls
ll - h 檢視大小
指定查詢的目錄深度:
-maxdepth levels
-mindepth levels
[root@tianyun ~]# find /
-maxdepth 3
-a
-name "ifcfg-eth0"
maxdepth 3 最大3層 a要滿足2個條件 並且
按
時間找(atime,mtime,ctime):
[root@tianyun ~]# find /etc
-mtime +5
//修改時間超過5天
[root@tianyun ~]# find /etc
-mtime 5
//修改時間等於5天
[root@tianyun ~]# find /etc
-mtime -5
//修改時間5天以內
按檔案型別:
[root@tianyun ~]# find /dev
-type f
//f普通
[root@tianyun ~]# find /dev
-type d
//d目錄
[root@tianyun ~]# find /dev
-type l
//l連結
[root@tianyun ~]# find /dev
-type b
//b塊裝置
[root@tianyun ~]# find /dev
-type c
//c字元裝置
[root@tianyun ~]# find /dev
-type s
//s套接字
[root@tianyun ~]# find /dev
-type p
//p管道檔案
按檔案許可權:
[root@tianyun ~]# find .
-perm 644
-ls .是當前目錄 精確查詢644 *一般都是精確
[root@tianyun ~]# find .
-perm
-
644
-ls -是包含到意思
帶不帶- 自己對比一下 檢視。 帶-表示只要6就可以
[root@tianyun ~]# find .
-perm
-
600
-ls
[root@tianyun ~]# find .
-perm
-
222
-ls //全域性可寫
[root@tianyun ~]# find /usr/bin /usr/sbin
-perm
-
4000
-ls //包含set uid
[root@tianyun ~]# find /usr/bin /usr/sbin
-perm
-
2000
-ls //包含set gid
[root@tianyun ~]# find /usr/bin /usr/sbin
-perm
-
1000
-ls //包含sticky
==
找到後處理的動作 ACTIONS:
(預設動作-print)==
-print
-ls
-delete
-exec 後面跟自定義的shell命令
-ok 後面跟自定義的shell命令
[root@tianyun ~]# find /etc
-name "ifcfg*"
後可以加
|xargs
-h
[root@tianyun ~]# find /etc
-name "ifcfg*"
-print
[root@tianyun ~]# find /etc
-name "ifcfg*"
-ls
[root@tianyun ~]# find /etc -name "ifcfg*" -exec cp -rvf {} /tmp \;
[root@tianyun ~]# find /etc -name "ifcfg*" -ok cp -rvf {} /tmp \;
exec
命令用於呼叫並執行指令的命令
查詢帶root帶檔案 複製到tmp下
find /etc -name “root*” -exec cp -rf {} /tmp \; 複製到當前檔案下 /tmp換成.
[root@tianyun ~]# find /etc
-name "ifcfg*"
-exec
rm -rf {}
\;
exec為執行一條shell命令 {}為前面的東西\; 格式
[root@tianyun ~]# find /etc
-name "ifcfg*"
-delete
擴充套件知識:find結合xargs
[root@tianyun ~]# find .
-name "yang*.txt"
|xargs
rm -rf !!!!!!!!!!!!!重點 找到之後刪除處理xargs 引數傳遞處理找出後刪除
[root@tianyun ~]# find /etc
-name "ifcfg-eth0"
|xargs -I {}
cp -rf
{}
/var/tmp
案例1:
分別找出file5 和除了file5的檔案
[root@tianyun ~]# mkdir dir1
[root@tianyun ~]# touch dir1/file{1..20}
[root@tianyun ~]# find /root/dir1 -name "file5"
[root@tianyun ~]# find /root/dir1
!
-name "file5" !為取反
[root@tianyun ~]# find /root/dir1 -name "file5" -o -name "file9" 即是file5又是file9
/root/dir1/file5
/root/dir1/file9
擴充套件
不常用
[root@tianyun ~]# find /root/dir1 -name "file5" -o -name "file9"
-ls
1466515 0 -rw-r--r-- 1 root root 0 6月 5 11:15 /root/dir1/file9
[root@tianyun ~]# find /root/dir1 -name "file5"
-ls
-o -name "file9"
-ls
1466499 0 -rw-r--r-- 1 root root 0 6月 5 11:15 /root/dir1/file5
1466515 0 -rw-r--r-- 1 root root 0 6月 5 11:15 /root/dir1/file9
[root@tianyun ~]# find /root/dir1
\(
-name "file5" -o -name "file9"
\)
-ls
\為轉譯 不加會報錯
1466499 0 -rw-r--r-- 1 root root 0 6月 5 11:15 /root/dir1/file5
1466515 0 -rw-r--r-- 1 root root 0 6月 5 11:15 /root/dir1/file9
[root@localhost ~]# find /root/dir1
\(
-name "file5" -o -name "file9"
\)
-exec rm -rvf {} \;
removed ‘/root/dir1/file5’
removed ‘/root/dir1/file9’
-exec和xargs的區別
2010-11-27 星期六 晴朗當你在命令列執行:
$find . -name 'core' -type f -exec rm {} /;
時,find -exec 命令會對每個匹配的檔案執行一個單獨的rm操作(execute a separate rm for each one), 正如你手動敲入下面命令:
rm ./bin/core
rm ./source/shopping_cart/core
rm ./backups/core
...但是使用這種方式,如果有100個檔案匹配了,那麼就需要啟100個程式,一個程式處理一個rm命令。一般來說,其越多程式,意味著越耗效能。我們可以換個思路,我們將要刪除檔案當作引數傳遞給rm不就可以了嗎?也就是說:
rm ./bin/core
rm ./source/shopping_cart/core
rm ./backups/core
...改成:
rm ./bin/core ./source/shopping_cart/core ./backups/core但是前提是後面的命令必須支援多引數。相有些命令,比如unzip,就不支援輸入多個jar包,所以必須用-exec。
xargs,顧名思義,是對引數進行處理的命令。它的任務就是將輸入行轉換成下一個命令的引數列表。因此上面的find -exec命令可以改寫成:
find . -name 'core' -type f -print | xargs rmWith this approach, xargs bundles together as many filename arguments as possible for submission to each invocation of rm that's needed, in compliance with the OS's maximum allowed size for an argument list. This means xargs is guaranteed not only to handle all the arguments, but also to use the smallest possible number of processes in doing so. For example, if each command can handle 100 arguments, and there are 110 filenames to process, there will be two invocations of the command, respectively handling 100 and 10 arguments.
其中作業系統允許的最大引數長度由如下命令得到:
forrest@ubuntu:~$ getconf ARG_MAX
2097152這意味著xargs保證不會因為引數過多而掛掉。所以目前看來唯一需要保證的就是後面的命令支援多引數。比如前面說過的unzip,就不支援多引數,如果你使用xargs xxx.jar
相比之下,也不難看出各自的缺點
1、exec 每處理一個檔案或者目錄,它都需要啟動一次命令,效率不好;
2、exec 格式麻煩,必須用 {} 做檔案的代位符,必須用 \; 作為命令的結束符,書寫不便。
3、xargs 不能操作檔名有空格的檔案;
綜上,如果要使用的命令支援一次處理多個檔案,並且也知道這些檔案裡沒有帶空格的檔案,
那麼使用 xargs比較方便; 否則,就要用 exec了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2658051/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師雲端計算學習路線分享檔案打包及壓縮程式設計師
- 新手必備 最新雲端計算學習路線圖-好程式設計師雲端計算程式設計師
- 好程式設計師雲端計算學習路線分享:關於NFS程式設計師NFS
- 好程式設計師雲端計算學習路線分享檢視程式process程式設計師
- 好程式設計師雲端計算學習路線分享LVM管理詳解程式設計師LVM
- 好程式設計師雲端計算學習路線分享軟體包管理程式設計師
- 好程式設計師雲端計算教程分享入門雲端計算要精通學習什麼?程式設計師
- 好程式設計師分享新手學習雲端計算的規劃程式設計師
- 好程式設計師雲端計算學習路線之高階許可權程式設計師
- 好程式設計師雲端計算培訓分享雲端計算中SOA是什麼?程式設計師
- 好程式設計師雲端計算培訓分享雲端計算中微服務是什麼?程式設計師微服務
- 好程式設計師雲端計算培訓分享雲端計算必會的Docker容器命令程式設計師Docker
- 初學者怎麼入手學習雲端計算?雲端計算學習路線圖分享
- 好程式設計師雲端計算教程分享雲服務和雲端計算的區別有那些程式設計師
- 好程式設計師雲端計算培訓分享學了雲端計算將來就業怎麼樣?程式設計師就業
- 好程式設計師雲端計算教程分享Linux雲端計算面試常見問題一程式設計師Linux面試
- 好程式設計師雲端計算教程分享Linux雲端計算面試常見問題二程式設計師Linux面試
- 好程式設計師雲端計算教程分享Linux雲端計算面試常見問題三程式設計師Linux面試
- 好程式設計師雲端計算培訓分享2020年雲端計算的發展趨勢程式設計師
- 雲端計算影片教程:2020年雲端計算學習路線圖
- 什麼叫做雲端計算?雲端計算基礎學習路線
- 好程式設計師雲端計算教程分享Shell程式設計之for迴圈結構程式設計師
- 小白怎麼學習雲端計算?2020最新雲端計算學習路線圖
- 學習雲端計算有哪些優勢?雲端計算教程學習路線圖
- 雲端計算是什麼?新手學習雲端計算的學習路線
- 雲端計算和大資料學哪個好?雲端計算學習大資料
- 好程式設計師雲端計算培訓分享msyql高階操作程式設計師
- 學習雲端計算哪裡好?雲端計算新的前景出路
- 雲端計算學習路線教程大綱課件:雲端計算開發程式設計條件結構程式設計
- 雲端計算學習路線教程大綱課件:客戶端查詢客戶端
- 雲端計算學習路線教程程式碼筆記:Shell程式設計筆記程式設計
- 雲端計算開發學習路線:Linux檔案時間Linux
- 雲端計算學習路線圖講解:想學雲端計算怎麼入門?
- 零基礎學雲端計算必備,最新雲端計算學習路線圖
- 零基礎雲端計算學習路線,到底什麼是雲端計算?
- 好程式設計師雲端計算學習路線教程大綱課件:Mount掛載詳解程式設計師
- 雲端計算學習路線圖素材課件:DevOps和雲端計算之間的關係dev
- 好程式設計師雲端計算培訓分享Linux檔案許可權簡單說明程式設計師Linux