在目录后显示查找斜杠?


19

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

Answers:


10

便携性:

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

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

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

使用GNU查找,请参见Shawn J. Goff的答案

如果即使在不输出到终端的情况下也愿意冒险对不可打印的字符进行处理,请参阅ddeimeke的答案

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


第一个命令没有为我打印尾部斜杠,但是第二个命令有。
史蒂文

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

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


我对发现的灵活性感到惊讶。
肖恩·高夫

1
注意这-printf是特定于GNU find的。
吉尔(Gilles)“所以,别再邪恶了”,2010年

好答案。我喜欢find的位置参数如何使它执行这样的高级输出。但是,请注意,如果逗号之间没有空格,它将无法正常工作。
jimp

1
基于这个答案和Gilles',我提出了以下简化版本:find . -type d -printf '%p/\n' -or -print
Teresa e Junior

8

也许

find . -print0 | xargs -0 ls -Fd

是一个选择。

在Solaris手册页中:

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


@吉尔斯:感谢“ d” ;-)
ddeimeke 2010年

这增加了系统调用的量
帕维尔Polewicz
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.