我有一个看起来像这样的发现:
rm -f crush-all.js
find . -type f \( -name "*.js" ! -name "*-min*" ! -name "*console*" \) | while read line
do
cat "$line" >> crush-all.js
echo >> crush-all.js
done
Run Code Online (Sandbox Code Playgroud)
我想添加以排除查找中名为“test”的目录,但我似乎无法弄清楚如何以某种方式添加“-type d”。我是怎么做的?
谢谢!
Jan*_*ary 24
您可以使用该-path选项查找并将其与-not运算符组合。
find . ! -path "*/test/*" -type f -name "*.js" ! -name "*-min-*" ! -name "*console*"
Run Code Online (Sandbox Code Playgroud)
请注意两点
-path 必须作为第一个参数出现-path test永远不会匹配任何内容顺便说一句,我不确定您为什么要使用括号,这没什么区别。它仅用于优先级,用于诸如! \( -name '*bla*' -name '*foo*' \)(即,不查找同时具有bla和 的事物foo)的结构。
进一步的改进:不需要使用 bash 循环,你可以简单地做
find . ... -exec cat {} \; -exec echo \;
Run Code Online (Sandbox Code Playgroud)
其中 ... 是 的其他参数find。