Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 如何在osx上忽略ls_Macos_Bash_Ls - Fatal编程技术网

Macos 如何在osx上忽略ls

Macos 如何在osx上忽略ls,macos,bash,ls,Macos,Bash,Ls,我尝试在OSX上执行以下操作: ls-lR——忽略*.app 这样我就可以递归搜索除.app文件夹之外的所有文件夹 然而,达尔文似乎没有忽略或隐藏选项 也许是一个递归搜索给定集合的一个文件夹深度的脚本,由于输出的格式,我不确定我不能通过管道ls-lR进行任何操作: ./ROOT/Applications/Some_app: drwxr-xr-x 3 admin root 102 26 Jun 11:03 app-bundle.app #<- WANT THIS drwxr-xr-

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

ls-lR——忽略*.app

这样我就可以递归搜索除.app文件夹之外的所有文件夹

然而,达尔文似乎没有忽略或隐藏选项

也许是一个递归搜索给定集合的一个文件夹深度的脚本,由于输出的格式,我不确定我不能通过管道
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
...
/ROOT/Applications/Some\u app:
drwxr-xr-x 3管理员根目录102 26 Jun 11:03 app-bundle.app#使用
查找

find . -ls -name '*.app' -prune

在bash中,可以使用扩展的globbing排除模式

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) 

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


ls | grep-v

查找!!羞愧地垂着头就像一个符咒。谢谢你(等待回答延迟)你的第二次迭代好多了。再考虑一下,它可以做得更简单。总是-ls。如果是应用程序,-prune.
find-ls-name'*.app'-prune | sed-n的//^[0-9]**[0-9]*//p'
非常完美!玩了一段时间后,您只需确保将最后的
/
退出搜索path@hoss-仅在bash v4或更高版本上使用globstar。添加到回答中,这是一个非常好且优雅的解决方案。事实上,非常优雅的.osx 10.8.5有bash--version=3.2.48。不确定这是否能解决不希望在递归列表中遍历.app目录的问题。如果我使用了
ls-R | grep-v“.app”
我最终会得到除.app目录之外的所有文件,但包括所有子文件和文件夹。如果终端较宽且文件名较短,这将不起作用——它将排除许多与模式不匹配的文件。实际上,这是可以挽救的——使用
1
选项来
ls
强制每行一个文件