如果不存在则列出目录而不出错

如果不存在则列出目录而不出错

我对所需的目录列表有一套相当严格的规范:

  1. 它必须列出当前目录中的目录
  2. 它必须仅列出基本名称(没有“./”,没有尾随斜杠)
  3. 如果没有,则不能出错(并且不能将错误打印到 std{out,err})
  4. 它必须非常轻便
  5. 它必须在 tcsh 下工作

我有一些工作像这样:

find -maxdepth 1 -mindepth 1 -type d -printf '%f\n'

但我忍不住觉得使用“find”有点过头了。我尝试使用 来做某事ls -d */,但我不知道如何让它不出错(或看起来不出错)。

有什么建议么?

答案1

就我个人而言,我认为 find 命令是正确的选择。

ls -d方法已经现在的问题:

  • 它显示空目录的错误。
  • 它打印尾随斜线。

两者都可以修复。tr可以处理斜线,并且您需要重定向来摆脱错误消息:

( ls -d */ | tr -d / > /dev/tty ) > & /dev/null

人tcsh了解更多信息。

相关内容