2017-07-18 53 views
0

發現如果我執行命令-or和exec故障

find . -name "*FOO*" -or -name "*foo*" 

它完美,返回106個文件與大寫FOO和4檔用小寫FOO。

如果我添加喜歡這個

find . -name "*FOO*" -or -name "*foo*" -exec ls -ld {} \; 

的EXEC LS語法只返回4小寫富

如果我一個真正的Unix主機上執行相同的指令,它會返回上面和下面,正如我所期望的那樣。

回答

2

這只是運算符優先級 - 嘗試:

find . \(-name "*FOO*" -or -name "*foo*" \) -exec ls -ld {} \; 
+0

感謝您的答覆。有趣的是,它在OSX和Unix上的運行方式不同。當我回家時,我會在Linux上嘗試它。 – JimR

+0

有時在BSD和非BSD操作系統之間存在差異,但我猜你可能在一種情況下對文件系統有不區分大小寫(但是保存病例),例如, OS X HFS +。無論如何,如果你尊重操作符優先級的通常規則,它應該在任何地方工作。 –