我正在尝试在OSX上执行以下操作:
ls -lR --ignore *.app
这样我就可以递归搜索<。em>的所有文件夹,除了 .app文件夹。
但似乎达尔文似乎没有--ignore
或--hide
选项。
也许是一个脚本以递归方式搜索给定集合的一个文件夹,我不确定由于输出的格式,我无法通过任何方式管道ls -lR
:
./ROOT/Applications/Some_app:
drwxr-xr-x 3 admin root 102 26 Jun 11:03 app-bundle.app #<- WANT THIS
drwxr-xr-x@ 24 admin root 816 26 Jun 11:24 folder #<- WANT THIS
./ROOT/Applications/Some_app/app-bundle.app: #<- DON'T WANT
drwxr-xr-x 7 admin root 238 26 Jun 11:03 Contents #<- DON'T WANT
...
答案 0 :(得分:8)
使用find
:
find . -ls -name '*.app' -prune
答案 1 :(得分:4)
在bash中,您可以使用扩展通配符来排除模式。
shopt -s extglob # this must be on its own line
echo !(*.app) # match everything except for the given pattern
如果您使用bash版本4或更高版本,则可以使用globstar以递归方式执行此操作。
shopt -s globstar
shopt -s extglob
echo **/!(*.app)
答案 2 :(得分:0)
另一种方法是管道grep:
ls | grep -v