¿Hay alguna forma de que `ls -d` cuando no se pase ningún argumento omita la visualización de `.`?

¿Hay alguna forma de que `ls -d` cuando no se pase ningún argumento omita la visualización de `.`?

Tengo los resultados de un findcomando pasando xargsa un archivo ls -d. Cuando ningún archivo coincide, obtengo:

.

como mi único resultado, porque de forma predeterminada ls -dmuestra:

.

..., cuando no se especifica ningún argumento (nombre de archivo). ¿Hay alguna forma de ls -domitir .cuando no se pasan argumentos y simplemente no se muestra ningún resultado?

Actualizar: Simplemente no puedes convencerlo ls -dde que no muestre .:

.

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

.

:)

Respuesta1

Usarlo xargsjunto con findes tan de los años 80...

Llamar por ejemplo:

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

y el comando ls nunca será llamado sin argumentos.

La función execplus fue agregada finden 1989 por David Korn para SVr4.

Respuesta2

tu etiquetaste, por lo que probablemente ejecutes GNU xargs, que tiene esta opción:

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

Con find ... | xargs -r ls -d, lsno se iniciará en absoluto si findno coincide con nada.

findaún podría coincidir .explícitamente. Para evitar eso, agregue ! -name .a la expresión de búsqueda. O utilice -mindepth 1(en GNU find) para evitar findque coincida con cualquiera de las rutas proporcionadas en la línea de comando.

(En cuanto a cómo hacer que lsse ignore ., no tengo idea).

información relacionada