如何使 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/*//"