有没有办法使用 bash 命令列出目录中的文件夹?(因为该ls
命令列出了所有文件和文件夹)
答案1
您可以使用:
ls -d -- */
由于所有目录都以 结尾/
,因此这仅列出当前路径中的目录。-d选项确保只打印目录名称,而不打印其内容。
答案2
Stephen Martin 的回复给出了警告,并列出了当前文件夹,所以我建议
find . -mindepth 1 -maxdepth 1 -type d
(这是在 Linux 上;我在 POSIX 手册页中找不到 -maxdepth 和 -mindepth)
答案3
find . -maxdepth 1 -type d
仅列出文件夹。正如 Teddy 指出的那样,您需要 -maxdepth 来阻止它循环进入子目录
答案4
有人说你“不应该”解析 ls 的输出。如果我没记错的话,背后的原因是输出旨在供人类阅读,而这可能会使解析变得不必要地复杂。
如果您不想要 ls 或 find,您可能需要尝试使用“[ -d ]”过滤“*”。
我就是这么做的,因为某种原因 ls 和 find 不起作用(我猜是文件名中有空格和括号,或者是我忽略了其他东西),然后我做了类似的事情
for f in * ; do [ -d "$f" ] && echo $f is indeed a folder ; done