让 find 在目录后显示斜杠?

Ste*_*ven 23 find

如何让 find 命令在目录后显示斜杠?例如,我想dir显示为dir/而不是dir. 我正在使用find . -print

Sha*_*off 19

find . \( -type d -printf "%p/\n" , ! -type d -print \)
Run Code Online (Sandbox Code Playgroud)

这使用该printf命令来格式化目录名称和其余部分的标准打印。

  • 基于这个答案和 Gilles',我想出了以下简化版本:`find 。-type d -printf '%p/\n' -or -print` (3认同)
  • 请注意,`-printf` 特定于 GNU find。 (2认同)

Gil*_*il' 13

便携:

find . -type d -exec sh -c 'printf "%s/\n" "$0"' {} \; -or -print
Run Code Online (Sandbox Code Playgroud)

如果您愿意单独列出目录和文件(您可以通过排序合并输出):

{ find . -type d -print | sed 's!$!/!'; find . \! -type d; } | sort
Run Code Online (Sandbox Code Playgroud)

使用 GNU find,请参阅Shawn J. Goff 的回答

如果即使不输出到终端,您也愿意冒不可打印的字符被损坏的风险,请参阅ddeimeke 的回答

在zsh中:print -rl -- **/*(DM)D包括点文件,M添加一个/目录后)


dde*_*eke 8

也许

find . -print0 | xargs -0 ls -Fd
Run Code Online (Sandbox Code Playgroud)

也是一种选择。

从 Solaris 手册页:

-F 用斜杠 (/) 标记目录,用大于号 (>) 标记门,用星号 (*) 标记可执行文件,用尾部竖线 (|) 标记 FIFO,用"结尾的符号链接at" 符号 (@) 和带有尾随等号 (=) 的 AF_UNIX 地址系列套接字。遵循命名为操作数的符号链接。