使 find 在目录后显示斜杠?

使 find 在目录后显示斜杠?

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

答案1

find . \( -type d -printf "%p/\n" , ! -type d -print \)

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

答案2

便携:

find . -type d -exec sh -c 'printf "%s/\n" "$0"' {} \; -or -print

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

{ find . -type d -print | sed 's!$!/!'; find . \! -type d; } | sort

使用 GNU find,请参阅肖恩·J·戈夫的回答

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

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

答案3

或许

find . -print0 | xargs -0 ls -Fd

也是一种选择。

来自 Solaris 手册页:

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

答案4

我想要尾随 /,但不需要星号。也可以省略 -print:

find . | xargs ls -Fd | sed -e "s/*//"

相关内容