我需要列出名为app的目录中的所有目录。 目录列表看起来像
app/frontend
app/authservice
app/mailservice
...............
...............
我想列出根目录中app/frontend
以外的应用程序目录中的所有目录。
我成功使用grep -v
命令
ls -d /app/packages/*/ | grep -v packages/frontend/
但是我想通过在ls命令中使用--ignore
得到同样的结果。
答案 0 :(得分:2)
ls --ignore
用于隐式条目,例如,在不使用-d
的情况下列出目录的内容,或在使用ls -R
的递归列表中的情况。它不适用于您通过/app/packages/*/
完成的在命令行上传递的条目。重要的是,扩展*
全局范围的是Shell,而不是ls
,因此就ls
而言,frontend
目录已被明确写出。
您可以使用外壳程序功能来省略特定目录。这个扩展的glob将列出除frontend
之外的所有目录:
ls -d /app/packages/!(frontend)/
(在脚本中,您将需要shopt -s extglob
。扩展glob通常在交互式shell中默认为启用,但在脚本中为禁用。)