亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標題: 關(guān)于find的特殊用法? [打印本頁]

作者: du_liang    時間: 2012-11-14 23:03
標題: 關(guān)于find的特殊用法?
# find / \( -path /root/backup_files -o -path /app \)  -prune -o -name "..*"     -print
/usr/share/man/man1/..1.gz

-prune 是表示被忽略,此命令如何分塊詳細解讀?
作者: du_liang    時間: 2012-11-15 12:53
沒朋友懂嗎?
作者: du_liang    時間: 2012-11-16 11:46
一直自己頂
作者: sky_sky888    時間: 2012-11-16 14:55
1,-o: EXPR1 -o EXPR2 查找匹配EXPR1 或 EXPR2 的條目,-path /root/backup_files -o -path /app 就是匹配 路徑中有/root/backup_files 或 /app的項目
2,-prune ,如果是目錄的時候,查找到匹配項目是不進入該目錄,也就是不再枚舉該目錄
3,-path ,匹配路徑
4,-name,匹配文件
5,() 表示把括弧里的東西當成一個整體
意思是從根目錄查找路徑中有/root/backup_files或-path /app,文件名字是..*的并打印


作者: du_liang    時間: 2012-11-16 15:35
本帖最后由 du_liang 于 2012-11-16 15:36 編輯

回復 5# sky_sky888

我來分割一下
# find /                     \( -path /root/backup_files    -o      -path /app \)                -prune               -o           -name "..*"     -print


理解:
就 /下查詢文件名是..*的文件并打印,但不在/root/backup_files   和 /app 下查詢,我只是不明白 第1個-o為什么寫中間, 第二個-o和誰匹配

是不這這樣理解?

   
作者: du_liang    時間: 2012-11-17 11:06
我建個文件測試下謝佳
作者: du_liang    時間: 2012-11-19 15:32
回復 5# sky_sky888


demo]# echo ''> dl/a.a
[root@www1 demo]# echo ''> dl2/b.b
[root@www1 demo]# find ./  -path ./dl -o -path ./dl2   -name "*.*"   -print
[root@www1 demo]# find ./  -path ./dl -o -path ./dl2   -name "*.*"   -print
[root@www1 demo]# find ./  -path ./dl -o -path ./dl2   -name "*.*"   -print
[root@www1 demo]# rm dl/a.a
rm: remove regular file `dl/a.a'? y
[root@www1 demo]# find ./  -path ./dl -o -path ./dl2   -name "*.*"   -print
[root@www1 demo]# find ./  -path ./dl -o -path ./dl2   -name "*.*"   -print
[root@www1 demo]# find ./  -path ./dl -o -path ./dl2   -name "*.*"   -print

我又這樣寫測試了下,為什么不打印呢


   
作者: sky_sky888    時間: 2012-11-19 18:46
  1. [root@localhost tmp]# ls ss
  2. a           routines.sh      VBoxGuestAdditions-amd64.tar.bz2
  3. deffiles    vboxadd          VBoxGuestAdditions-x86.tar.bz2
  4. do_dkms     vboxadd-service
  5. install.sh  vboxadd-x11
  6. [root@localhost tmp]# find . -path ./ss/def*
  7. ./ss/deffiles
  8. [root@localhost tmp]# find . -path ./ss
  9. ./ss
  10. [root@localhost tmp]# find . -path ./ss/def*  -o -path ./ss/do*
  11. ./ss/do_dkms
  12. ./ss/deffiles
  13. [root@localhost tmp]# find . -path ./ss/def*  -o -path ./ss/do* -name do\*
  14. ./ss/do_dkms
  15. ./ss/deffiles
  16. [root@localhost tmp]# find . \(-path ./ss/def*  -o -path ./ss/do*\) -name do\*
  17. ./ss/do_dkms
  18. ./ss/deffiles
  19. [root@localhost tmp]# find . \( -path ./ss/def*  -o -path ./ss/do* \) -o -name do\*
  20. ./ss/do_dkms
  21. ./ss/deffiles


復制代碼

作者: du_liang    時間: 2012-11-19 22:13
回復 9# sky_sky888

接8樓,

我又試了下:
[root@demo demo]# find . -path ./dl/* -o -path ./dl2/* -name "*.*"
./dl2/b.b
./dl/a.a
[root@demo demo]# find . -path ./dl/* -o -path ./dl2/* -name "*"
./dl2/b.b
./dl/a.a

有結(jié)果

我查了man find:
expr1 -o expr2
              Or; expr2 is not evaluated if expr1 is true.

按上面的意思,-path ./dl/*應(yīng)該是expr1,expr2則為 -path ./dl2/*,為什么expr1為真了,exp2還會顯示?


   
作者: sky_sky888    時間: 2012-11-20 12:26
find . -path ./dl/* -o -path ./dl2/* -name "*.*" 的效果==find . -name "*.*"
因為兩個-path之間是or的關(guān)系,后邊的一個-name是又加上的選項。
find . -name "*"==find  你要知到wildcard * 有多強大啊,匹配所有的目錄和文件啊

作者: xiangdeanjing    時間: 2012-11-20 12:30
還是不懂。關(guān)注下。
作者: du_liang    時間: 2012-11-21 11:34
回復 12# xiangdeanjing

再頂下


   




歡迎光臨 Chinaunix (http://72891.cn/) Powered by Discuz! X3.2