Hay muchas maneras de listar archivos y mostrar información sobre ellos en sistemas Linux. Esta publicación revisa una serie de comandos que proporcionan detalles sobre los archivos y ofrece opciones para personalizar sus listados de archivos para satisfacer sus necesidades.
La mayoría de los comandos listan archivos dentro de directorios individuales, mientras que otros llegan tan profundamente a un sistema de archivos como quiera mirar.
El comando principal para listar archivos es, por supuesto, ls. Este comando, sin embargo, tiene un gran número de opciones para encontrar y listar solo los archivos que desea ver. Además, siempre hay find para ayudar con búsquedas de archivos muy específicas.
Listar archivos por nombre
La forma más fácil de listar archivos por nombre es simplemente listarlos usando el comando ls. Listar archivos por nombre (orden alfanumérico) es, después de todo, el valor predeterminado. Puede elegir el ls (sin detalles) o el ls-l (muchos detalles) para determinar su vista.
$ ls | head -68pgs.pdfAesthetics_Thank_You.pdfalien.pdfAnnual_Meeting_Agenda-20190602.pdfbigfile.bz2bin$ ls -l | head -6-rw-rw-r-- 1 shs shs 10886 Mar 22 2019 8pgs.pdf-rw-rw-r-- 1 shs shs 284003 May 11 2019 Aesthetics_Thank_You.pdf-rw-rw-r-- 1 shs shs 38282 Jan 24 2019 alien.pdf-rw-rw-r-- 1 shs shs 97358 May 19 2019 Annual_Meeting_20190602.pdf-rw-rw-r-- 1 shs shs 18115234 Apr 16 17:36 bigfile.bz2drwxrwxr-x 4 shs shs 8052736 Jul 10 13:17 bin
Canalice la salida de ls al comando more si desea revisar su listado de una pantalla a la vez.
Lista de archivos en orden inverso de nombres
Para invertir la lista de archivos por nombre, agregue la opción-r (invertir). Esto será como voltear la lista normal al revés.
$ ls -r$ ls -lr
Listar archivos por extensión de archivo
El comando ls no analiza los tipos de archivo por contenido, pero funciona con nombres de archivo. Sin embargo, hay una opción de comando que puede enumerar los archivos por extensión. Si agrega la opción-X, ls ordenará los archivos por nombre dentro de cada categoría de extensión. Por ejemplo, enumerará primero los archivos sin extensiones (en orden alfanumérico) seguidos de los archivos con extensiones similares .1, .bz2,.c y así sucesivamente.
Listar solo directorios
De forma predeterminada, el comando ls mostrará tanto los archivos como los directorios. Si desea listar solo directorios, puede usar la opción-d. Obtendrá un listado como este:
$ ls -d */1/ backups/ modules/ projects/ templates/2/ html/ patches/ public/ videos/bin/ new/ private/ save/
Listar archivos por tamaño
Si desea listar archivos en orden de tamaño, agregue la opción-S. Tenga en cuenta, sin embargo, que esto no le mostrará los tamaños (junto con otros detalles del archivo) a menos que también agregue la opción-l (lista larga). Al listar archivos por tamaño, generalmente es útil ver que el comando está haciendo lo que pidió. Observe que el valor predeterminado es mostrar primero los archivos más grandes. Agregue la opción-r para revertir esto (es decir, ls-lSr).
$ ls -lStotal 959492-rw-rw-r-- 1 shs shs 357679381 Sep 19 2019 sav-linux-free-9.tgz-rw-rw-r-- 1 shs shs 103270400 Apr 16 17:38 bigfile-rw-rw-r-- 1 shs shs 79117862 Oct 5 2019 Nessus-8.7.1-ubuntu1110_amd64.deb
Listar archivos por propietario
Si desea listar archivos por propietario (p. ej., en un directorio compartido), puede pasar la salida del comando ls para ordenar y seleccionar la columna propietario agregando-k3 para ordenar en el tercer campo.
$ ls -l | sort -k3 | moretotal 56-rw-rw-r-- 1 dory shs 0 Aug 23 12:27 tasklistdrwx------ 2 gdm gdm 4096 Aug 21 17:12 tracker-extract-files.121srwxr-xr-x 1 root root 0 Aug 21 17:12 ntf_listenerc0c6b8b4567drwxr-xr-x 2 root root 4096 Aug 21 17:12 hsperfdata_root
^
|
De hecho, puede ordenar cualquier campo de esta manera (por ejemplo, año). Solo tenga cuidado de agregar una » n » – – k5n-si está ordenando en un campo que es numérico o lo ordenará en orden alfanumérico. Esta técnica de clasificación también es útil para ordenar el contenido de los archivos, no solo para enumerar archivos.
Listar archivos por edad
Utilice la opción-t para listar los archivos por orden de edad: cuán nuevos son. Agregue la opción-r para obtener los archivos actualizados más recientes que aparecen en último lugar de la lista. Uso este alias para mostrarme una lista de los archivos que he actualizado más recientemente:
$ alias recent='ls -ltr | tail -8'
Tenga en cuenta que los tiempos de cambio y modificación de archivos son diferentes. Las opciones-c (cambio) y-t (modificación) no siempre darán los mismos resultados. Si cambia los permisos de un archivo y nada más, -c colocará esos archivos en la parte superior de la salida ls, mientras que-t no lo hará. Si tiene curiosidad por la diferencia, mire la salida del comando stat.
$ stat ckacct File: ckacct Size: 200 Blocks: 8 IO Block: 4096 regular fileDevice: 801h/2049d Inode: 829041 Links: 1Access: (0750/-rwxr-x---) Uid: ( 1000/ shs) Gid: ( 1000/ shs)Access: 2020-08-20 16:10:11.063015008 -0400Modify: 2020-08-17 07:26:34.579922297 -0400 <== content changesChange: 2020-08-24 09:36:51.699775940 -0400 <== content or permissions changes Birth: -
Lista de archivos por grupo
Para ordenar los archivos por los grupos asociados, puede pasar la salida de una lista larga al comando ordenar y decirle que ordene en la columna 4.
$ ls -l | sort -k4
Listar archivos por fecha de acceso
Para listar archivos por fecha de acceso (a los que se accedió primero más recientemente), utilice las opciones-ltu. La» u «hace cumplir el orden de listado» por fecha de acceso».
$ ls -ltutotal 959500-rwxr-x--- 1 shs shs 200 Aug 24 09:42 ckacct <== most recently used-rw-rw-r-- 1 shs shs 1335 Aug 23 17:45 lte
Listar varios archivos en una sola línea
A veces, una lista condensada de archivos es más apropiada para la tarea en cuestión. El comando ls incluso tiene opciones para eso. Para listar archivos en el menor número de líneas posible, puede usar format format = coma para separar los nombres de archivo con comas, como en este comando:
$ ls --format=comma1, 10, 11, 12, 124, 13, 14, 15, 16pgs-landscape.pdf, 16pgs.pdf, 17, 18, 19,192.168.0.4, 2, 20, 2018-12-23_OoS_2.pdf, 2018-12-23_OoS.pdf, 20190512_OoS.pdf,'2019_HOHO_application working.pdf' …
¿Prefiere espacios en blanco? En su lugar, utilice format format=across.
$ ls --format=across z*z zip zipfiles zipfiles1.bat zipfiles2.batzipfiles3.bat zipfiles4.bat zipfiles.bat zoom_amd64.deb zoomap.pdfzoom-mtg
Agregar profundidad a sus búsquedas
Mientras que ls generalmente enumera archivos en un solo directorio, puede optar por listar archivos recursivamente utilizando las opciones-R, profundizando en toda la profundidad de los directorios:
$ ls -R zzzzz | grep -v "^$"zzzzz:zzzzzzzzz/zzzz:zzzzzzzz/zzzz/zzz:zzzzzzz/zzzz/zzz/zz:zzzzzz/zzzz/zzz/zz/z:sleeping
Alternativamente, puede usar un comando find con una especificación de profundidad limitada o ilimitada. En este comando, le indicamos al comando find que busque solo en tres niveles de directorios:
$ find zzzzz -maxdepth 3zzzzzzzzzz/zzzzzzzzz/zzzz/zzzzzzzz/zzzz/zzz/zz
Elegir ls vs find
Cuando necesita listar archivos que cumplen con una lista muy selectiva de requisitos, el comando find es probablemente una mejor herramienta que ls.
A diferencia de ls, el comando find se ve lo más profundamente posible a menos que lo restrinja. También tiene muchas otras opciones y un comando-exec que le permite realizar alguna acción específica una vez que encuentre los archivos que está buscando.
Wrap-Up
El comando ls tiene muchas opciones para listar archivos. Échales un vistazo. Puede que encuentres algo que te encante.