当没有传递任何参数时,有没有办法让“ls -d”跳过显示“.”?

当没有传递任何参数时,有没有办法让“ls -d”跳过显示“.”?

find我有一个命令传递到xargs的结果ls -d。当没有文件匹配时,我得到:

.

作为我的唯一输出,因为默认情况下ls -d显示:

.

...,当没有指定(文件名)参数时。有没有办法在不传递任何参数时ls -d省略.,并且不显示任何输出?

更新:你只是无法说服ls -d不显示.

.

ls -d -A\                # Skip implied
   --hide=.\             # No, really, skip implied
   --ignore=.            # I mean it, damn it!

.

:)

答案1

xargs与 一起使用find太 1980 年代了...

致电例如:

find . -type d -exec ls -d {} + 

并且 ls 命令永远不会在没有参数的情况下被调用。

findDavid Korn 于 1989 年为 SVr4添加了 execplus 功能。

答案2

您标记了,所以你可能运行 GNU xargs,它有这个选项:

-r, --no-run-if-empty
    If the standard input does not contain any nonblanks, do not run the command. 

对于find ... | xargs -r ls -d,如果不匹配任何内容,则ls根本不会启动。find

find可能仍然.显式匹配。为了避免这种情况,请添加! -name .到查找表达式中。或者使用-mindepth 1(在 GNU find 中)来防止find匹配命令行上给出的任何路径。

(至于如何让ls自己忽略.,我不知道。)

相关内容