前陣子,我們審查了15件實事 find命令的例子(第一部分)。查詢命令可以做很多比只是在尋找基於名稱的檔案 (第2部分)在這篇文章中,讓我們來討論15高階find命令的例子, 包括-根據它訪問,修改或改變的時間查詢檔案,查詢檔案相比之下,執行操作找到的檔案等, 拉梅什納塔拉詹:這是我的照片中的可愛的小女兒。她很高興地發現在加州長灘水族館海獅。
基於訪問/修改/更改時間查詢檔案
你可以找到基於以下三個檔案的時間屬性的檔案。
- 訪問時間的檔案。檔案訪問時,訪問時間得到更新。
- 的檔案的修改時間。檔案內容修改時,修改時間得到更新。
- 更改檔案的時間。更改時間時,被更新的inode資料的變化。
在下面的例子中,min選項之間的差異和時間選項是引數。
- 分論點將它的引數為分鐘。例如,60分鐘(1小時)= 60分鐘。
- 時間引數,將它的引數為24小時。例如,時間2 = 2 * 24小時(2天)。
- 雖然這樣做的24個小時計算,小數部分都將被忽略,所以25小時為24小時,和47小時取為24小時,僅48小時為48小時。要獲得更清晰的參考atime的部分find命令的手冊頁。
例1:找到在1個小時內被更改的檔案
想要通過檔案修改時間找出檔案,可以使用引數 -mmin -mtime。下面是man手冊中有關mmin和mtime的定義。
- -mmin n 檔案最後一次修改是在n分鐘之內
- -mtime n 檔案最後一次修改是在 n*24小時之內(譯者注:也就是n天了唄)
執行下面例子中的命令,將會找到當前目錄以及其子目錄下,最近一次修改時間在1個小時(60分鐘)之內的檔案或目錄
1 |
# find . -amin -60 |
同樣的方式,執行下面例子中的命令,將會找到24小時(1天)內被訪問了的檔案(檔案系統根目錄 / 下)
1 |
# find / -atime -1 |
例2:找到1個小時內被訪問過的檔案
想要通過檔案訪問時間找出檔案,可以使用引數 -amin -atime。下面是man手冊中有關amin和atime的定義。
- -amin n 檔案最後一次訪問是在n分鐘之內
- -atime n 檔案最後一次訪問是在 n*24小時之內
執行下面例子中的命令,將會找到當前目錄以及其子目錄下,最近一次訪問時間在1個小時(60分鐘)之內的檔案或目錄
1 |
# find . -amin -60 |
同樣的方式,執行下面例子中的命令,將會找到24小時(1天)內被訪問了的檔案(檔案系統根目錄 / 下)
1 |
# find / -atime -1 |
例3:查詢一個小時內狀態被改變的檔案
(譯者注:這裡的改變更第1個例子的更改檔案內容時間是不同概念,這裡是更改的是檔案inode的資料,比如檔案的許可權,所屬人等等資訊)
要查詢檔案的inode的更改時間,使用-cmin和-ctime選項
- -cmin n 檔案的狀態在n分鐘內被改變
- -ctime n 檔案狀態在n*24小時內(也就是n天內)被改變
(譯者注:如果上面的n為-n形式,則表示n分鐘/天之內,n為+n則表示n分鐘/天之前)
下面的例子在當前目錄和其子目錄下面查詢一個小時內檔案狀態改變的檔案(也就是60分鐘內):
1 |
# find . -cmin -60 |
同樣的道理,下面的例子在根目錄/及其子目錄下一天內(24小時內)檔案狀態被改變的檔案列表:
1 |
# find / -ctime -1 |
例4:搜尋僅僅限定於檔案,不顯示資料夾
上面的例子搜尋出來不僅僅有檔案,還會顯示資料夾。因為當一個檔案被訪問的時候,它所處的資料夾也會被訪問,如果你對資料夾不感興趣,那麼可以使用 -type f 選項
下面的例子會顯示30分鐘內被修改過的檔案,資料夾不顯示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# find /etc/sysconfig -amin -30 . ./console ./network-scripts ./i18n ./rhn ./rhn/clientCaps.d ./networking ./networking/profiles ./networking/profiles/default ./networking/profiles/default/resolv.conf ./networking/profiles/default/hosts ./networking/devices ./apm-scripts [注: 上面的輸出包含了檔案和資料夾] # find /etc/sysconfig -amin -30 -type f ./i18n ./networking/profiles/default/resolv.conf ./networking/profiles/default/hosts [注: 上面的輸出僅僅包含檔案] |
例5: 僅僅查詢非隱藏的檔案(不顯示隱藏檔案):
如果我們查詢的時候不想隱藏檔案也顯示出來,可以使用下面的正則式查詢:
下面的命令會顯示當前目錄及其子目錄下15分鐘內檔案內容被修改過的檔案,並且只列出非隱藏檔案。也就是說,以.開頭的檔案時不會顯示出來的
1 |
# find . -mmin -15 \( ! -regex ".*/\..*" \) |
???????????
??????????????????????????????????????test????????????????test???????????????????????????
?6? ????????????????????
1 |
??? find -newer FILE |
????????/etc/passwd????????????????????????????????????????????????????????????????????????? �^_^??
1 |
# find -newer /etc/passwd |
?7?????????????????????????
1 |
# find -newer /etc/passwd |
??????????/etc/hosts????????????????????????/?????/etc/hosts???????????????????????????????????
1 |
# find -anewer /etc/hosts |
?8????????????????????????
1 |
??? find -cnewer FILE |
????????????/etc/fstab???????????????????/etc/fstab????????????????????????????????????????????
1 |
# find -cnewer /etc/fstab |
???????????????????
?????????????find?????????????????????find????????????????????
???????????????find??????????????????????find????????????
????find?????????????????????
1 |
# find |
???OPERATION?????????????????????
- �rm ???????find???????
- �mv ??????????????
- �ls -l ????????????????
- �md5sum? ?????????md5sum?????????????????????????
- �wc ???????????????????????
- �????Unix?shell??
- �???????shell?????????????????
?9??find??????? ls -l? ???1???????????????
1 2 3 4 5 6 7 |
# find -mmin -60 ./cron ./secure ? # find -mmin -60 -exec ls -l {} \; -rw-------??1 root root 1028 Jun 21 15:01 ./cron -rw-------??1 root root 831752 Jun 21 15:42 ./secure |
?10?????????????
????????????/?????????????????????????????/home/?????????????????????/???????????????
????????????/????????.log????????????????/???????????????????????
1 |
# find / -name "*.log" |
??????-xdev????????????????????????xdev?man page???????-xdev????
- -xdev�Don?t descend directories on other filesystems.
???????/????????????????(???/???????)????.log?????????????????????/??????????????????????/home/?
1 |
# find / -xdev -name "*.log" |
?11? ???????????{}
linux????????????{}??????????????????????{}
1 |
# find -name "*.txt" cp {} {}.bkup \; |
??????????????{}???????????????????????????????????????????
1 |
find -name "*.txt" -exec mv {} `basename {} .htm`.html \; |
?12? ????{}??
???????????shell???????????????
1 |
# mv "$1" "`basename "$1" .htm`.html" |
????????????????????????????????????shell?????mv.sh???????????find???
1 |
find -name "*.html" -exec ./mv.sh '{}' \; |
??????????find?????????????????????????????find???-exec????????????????????????????
?13? ???????/dev/nul
????????????????????????????????????????????????
????find???????????????? ????????????????????????????null???????linux??????????????????????????????????
1 |
find -name "*.txt" 2>>/dev/null |
??????????????????????????/????????*.conf????????????Permission denied?????? ???????
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ find / -name "*.conf" /sbin/generate-modprobe.conf find: /tmp/orbit-root: Permission denied find: /tmp/ssh-gccBMp5019: Permission denied find: /tmp/keyring-5iqiGo: Permission denied find: /var/log/httpd: Permission denied find: /var/log/ppp: Permission denied /boot/grub/grub.conf find: /var/log/audit: Permission denied find: /var/log/squid: Permission denied find: /var/log/samba: Permission denied find: /var/cache/alchemist/printconf.rpm/wm: Permission denied [Note: There are two valid *.conf files burned in the "Permission denied" messages] |
1 2 3 4 |
$ find / -name "*.conf" 2>>/dev/null /sbin/generate-modprobe.conf /boot/grub/grub.conf [Note: All the "Permission denied" messages are not displayed] |
?14? ?????????????
????????????????????????????????????linux(?Unix)???????????????find??????rename?????????????????????????
?????????mp3????????????_
1 |
$ find . -type f -iname ?*.mp3? -exec rename ?s/ /_/g? {} \; |
?15? ?find???????????
?find?man page???????????????????????????
???find???????????????????setuid???????????/root/suid.txt??? ????????100M??????/root/big.txt?
1 2 |
# find / \( -perm -4000 -fprintf /root/suid.txt '%#m %u %p\n' \) , \ \( -size +100M -fprintf /root/big.txt '%-10s %p\n' \) |
Find命令示例(第一部分)
若你喜歡這篇關於find命令的Daddy文章,別忘了看看第一部分的關於find命令的Mommy文章。 媽咪,我找到了! — 15個實用的Linux find命令示例