%20en%20los%20archivos%20devueltos%20por%20el%20comando%20buscar.png)
Estoy haciendo un comando de búsqueda para mostrarme los archivos de una extensión específica, como:
find $directory -type f -name "*.vm"
sin embargo, también me gustaría poder ver los permisos del archivo (como muestra ls -l).
¿Cómo se puede hacer esto?
Respuesta1
GNU find
tiene una -ls
directiva que puedes usar. Tiene un formato de salida bastante parecido, pero no exactamente igual, al de ls -l
.
La acción predeterminada de buscar, si no se proporciona ninguna, es -print
simplemente imprimir el nombre del archivo y la ruta tal como se encontró. Si agrega (o reemplaza -print
con) -ls
, obtendrá una lista más detallada.
Si quieres algún formato en particular por el motivo que sea, -printf
es lo que quieres. Por ejemplo, prueba esto:
find . -printf "%M %n %8.8u %8.8g %8.8s %Ax %AX %p\n"
para replicar aproximadamente el ls -l
formato de salida. (Eso utiliza un formato de fecha diferente; es posible que también sea posible replicar el comportamiento de ls allí; consulte la find
página de manual para obtener detalles sobre los especificadores de formato disponibles y printf(3)
para obtener detalles sobre lo que hacen los números).
Generalmente quieresevitarusando -exec
si puedes, y si tienes que usar -exec,desearintentar utilizar +
en lugar de {}
dar varios nombres de archivos en una sola invocación. De lo contrario, el comando se ejecutará una vez por cada archivo que coincida con los criterios, lo que con una gran cantidad de archivos puede suponer una reducción sustancial del rendimiento.
También tenga en cuenta que si no necesita el comportamiento de recursividad, la solución más sencilla podría ser simplemente usar ls en primer lugar:ls -ld $directory/*.vm
Respuesta2
Puede especificar la -ls
opción para find
. O, si necesita un formato específico, utilice -exec
:
find "$directory" -type f -name '*.vm' -exec ls -l {} \;