Answers:
使用GNU,find
您可以使用以下-printf
选项:
find . -maxdepth 1 -type d -printf '%f\n'
正如Paweł在评论中指出的那样,如果您不想列出当前目录,请添加-mindepth 1
,例如:
find . -mindepth 1 -maxdepth 1 -type d -printf '%f\n'
printf
POSIX未提及任何选项,并且其他一些find
版本似乎不支持这些选项。GNU find可以安装在大多数地方,因此从某种意义上讲它是可移植的。
-mindepth 1
,如果你想摆脱的.
更新:
较短的替代方法:
find . -maxdepth 1 -type d | cut -c 3-
将为您提供名称,每行一个,没有任何斜杠
ls
。同时,我在另一个答案上发布了一个链接,说明为什么这是一个坏主意,此答案后来被删除了。当时只有2个答案,原因似乎很明显。我很高兴您指出了歧义,这是我的解释。作为记录,我同意我的赞成票,因为我同意你目前的回答。
\n
在目录名称中有一个您不能使用cut检索它的名称(这是我对您进行低票表决时所做的事情)。在极少数情况下,ls
行为举止不会危险,使用其他方式几乎总是更安全。
使用GNU find,可以使用-mindepth来防止find与当前目录匹配:
find . -type d -maxdepth 1 -mindepth 1
由于您不是递归执行此操作,因此可以使用bash glob:
echo */
将尾随/添加到全局将导致仅目录匹配。
*/
错过了点文件并包含符号链接。这可能是问题,也可能不是问题。
我通常使用:
find * -type d
但是我不知道这是做您想要的事情的正确方法。
echo */
会或多或少地做同样的事情(它会丢失点文件并包含符号链接),但随后joachim会问如何删除final /
。
foo bar ...
全部集中在一条线上而没有./
前面吗?