2013-03-10 60 views
0
$pwd 
/tmp 
$touch 1.tst 2.tst 
$mkdir inner_dir 
$touch inner_dir/3.tst 
$find . ! -name . -prune -name '*.tst' 
1.tst 
2.tst 

我想限制「查找」只搜索到與「TST」擴展名的文件的當前目錄(我知道這是可以做到的'ls'命令,但希望稍後添加其他「查找」過濾器)。 我的問題是上面的'find'是如何工作的? 爲什麼以下工作(帶有OR選項)?-prune在發現沒有OR(-o)選項工作 - Unix的

find . ! -name . -prune -o -name '*.tst' 

謝謝。

+0

http://content.hccfl.edu/pollock/unix/findcmd.htm。看到底部附近,我認爲這適用於你的情況。祝你好運。 – shellter 2013-03-10 20:09:55

回答

1

-prune 總是求值爲True。如果它是目錄,則停止當前路徑名稱的下降。如果指定了-depth標誌,則忽略-prune標誌爲 。

我想如果你玩它,你可以找出它在做什麼。

例如

find . ! -name . -prune 

./1.tst 
./2.tst 
./d 

我們不進入下來./d因爲剪枝的 - 「停止下降......」。然後剩下的部分被名稱'* .tst'過濾爲頂層目錄中的列表文件。

HTH