13

我正在尝试在 OSX 上执行以下操作:

ls -lR --ignore *.app

这样我就可以递归搜索.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
...
4

3 回答 3

11

使用find

find . -ls -name '*.app' -prune
于 2012-06-26T18:38:37.810 回答
5

在 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) 
于 2012-06-26T18:42:23.863 回答
1

另一种方法是通过管道连接到 grep:

ls | grep -v

于 2017-05-09T08:47:53.193 回答