Cuando escribo algo como:
find . -name *foo* | ls -lah
devuelve el mismo resultado que un lscomando simple , como si no tuviera entrada.
Sin embargo:
ls -lah $( find . -name *foo* )
funciona bien, pero solo cuando el findcomando tiene resultados.
¿Es posible canalizar ls?
bash
command-line
ls
pipe
Lasall
fuente
fuente

Respuestas:
Se puede usar
-execconfindcomando.fuente
find . -name '*foo*' -exec ls -lah {} +Eso debería funcionar.
fuente
-exec +(o-exec \;).xargssolo es seguro de usar con la-0opción, lo que significa que tiene que decirle a cualquier comando que canalicexargspara delimitar los elementos con NULL-bytes (\ 0). Confindusted puede hacer eso con-print0. xargs's -0 y find's -print0 no son estándar, pero -exec sí lo es, por lo que si la portabilidad es un problema, use find con -exec.Prueba esto:
fuente
Use esto: (ls puede ordenar, funciona con nombres de archivos con espacios o caracteres inusuales)
find . -name *foo* -print0 | xargs -0 ls -lah"-print0" significa que los nombres de archivo como
file foo 1se obtendrán defindseguido de nulo. El argumento "-0" para xargs le dice que espere este tipo de entrada, por lo que los nombres de archivo con espacios se canalizanlscorrectamente al comando.La
xargsconstrucción es en algunos aspectos mejor quefind etc -exec ls {} \;porque todos los nombres de archivo se envían a lalsvez, por lo que si desea ordenarlos por marca de tiempo (usandols), algo como esto funciona:find . -iname *pdf -print0 | xargs -0 ls -ltrEn un sistema NetBSD, "-printx" también es una opción (esto me parece un argumento útil, pero lo que sea, tenemos xargs -0 y está bien):
find . -name *foo* -printx | xargs ls -lah(no para Ubuntu)fuente