Linux: cómo mostrar el permiso de los archivos (como ls -l) en los archivos devueltos por el comando buscar

Linux: cómo mostrar el permiso de los archivos (como ls -l) en los archivos devueltos por el comando buscar

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 findtiene una -lsdirectiva 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 -printsimplemente imprimir el nombre del archivo y la ruta tal como se encontró. Si agrega (o reemplaza -printcon) -ls, obtendrá una lista más detallada.

Si quieres algún formato en particular por el motivo que sea, -printfes 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 -lformato de salida. (Eso utiliza un formato de fecha diferente; es posible que también sea posible replicar el comportamiento de ls allí; consulte la findpá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 -execsi 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 -lsopción para find. O, si necesita un formato específico, utilice -exec:

find "$directory" -type f -name '*.vm'  -exec ls -l {} \;

información relacionada