find命令如何组合OR和AND

时间:2014-06-02 21:36:26

标签: linux find

我想在目录中找到所有php和js文件,并排除其中一个子目录。 我将来可能不得不排除多个子目录。

我试过了:

find /home/jul/here -type f -iname "*.php" -o -iname "*.js" ! -path "/home/jul/here/exclude/*"

问题是它只从/ home / jul / here / exclude中排除了js文件。

有没有办法放一些括号?

找到(某些东西或其他东西)并排除这个

2 个答案:

答案 0 :(得分:0)

find /home/jul/here -type f \( -iname "*.php" -o -iname "*.js" \) ! -path "/home/jul/here/exclude/*"

答案 1 :(得分:0)

您需要在每组文件后添加排除模式。所以这样的事情应该有效:

find /home/jul/here -type f -iname "*.php" ! -path "/home/jul/here/exclude/*" -o -iname "*.js" ! -path "/home/jul/here/exclude/*"

或者更好的变量:

EXCLUDE=/home/jul/here/exclude
find /home/jul/here -type f -iname "*.php" ! -path "$EXCLUDE/*" -o -iname "*.js" ! -path "$EXCLUDE/*"