![当没有传递任何参数时,有没有办法让“ls -d”跳过显示“.”?](https://linux22.com/image/134459/%E5%BD%93%E6%B2%A1%E6%9C%89%E4%BC%A0%E9%80%92%E4%BB%BB%E4%BD%95%E5%8F%82%E6%95%B0%E6%97%B6%EF%BC%8C%E6%9C%89%E6%B2%A1%E6%9C%89%E5%8A%9E%E6%B3%95%E8%AE%A9%E2%80%9Cls%20-d%E2%80%9D%E8%B7%B3%E8%BF%87%E6%98%BE%E7%A4%BA%E2%80%9C.%E2%80%9D%EF%BC%9F.png)
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 命令永远不会在没有参数的情况下被调用。
find
David 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
自己忽略.
,我不知道。)