如何ls - 在osx上签名

时间:2012-06-26 18:35:14

标签: macos bash ls

我正在尝试在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
...

3 个答案:

答案 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