Cuando uso el ls
comando con la opción -l
, la primera cadena de letras proporciona la información sobre cada archivo, y la primera letra de esta cadena proporciona el tipo de archivo. ( d
= directorio, -
= archivo estándar, l
= enlace, etc.)
¿Cómo puedo filtrar los archivos de acuerdo con esa primera letra?
Respuestas:
Puede filtrar todo menos los directorios de
grep
esta manera:el
^
indica que el patrón está al comienzo de la línea. Reemplazard
con-
,l
, etc., según sea el caso.Por supuesto, puede usar otros comandos para buscar directamente tipos específicos (por ejemplo
find . -maxdepth 1 -type d
) o usarls -l | sort
para agrupar tipos similares en función de este primer carácter, pero si desea filtrar, debe usargrep
para seleccionar solo las líneas apropiadas de la salida.fuente
ls -lL
.-L
seguirá los enlaces simbólicos para mostrar si está vinculado a un directorio o un archivo.Si desea mostrar toda la salida pero tiene archivos de tipo similar listados juntos, puede ordenar la salida en el primer carácter de cada línea:
fuente
El comando
ls
trata con nombres de archivos , que se registran en las estructuras de datos del directorio. Por lo tanto, realmente no le importa el archivo en sí, incluido el "tipo" de un archivo.Un comando que es más adecuado para trabajar en archivos reales , no solo sus nombres, es
find
. Tiene una opción que responde directamente a su pregunta sobre cómo filtrar la lista por tipo de archivo.Esto proporciona una lista del directorio actual similar a
ls -l
:De manera predeterminada,
find
enumera los directorios de forma recursiva, lo que se desactiva al limitar la profundidad de búsqueda a 1.Puede omitir el
.
, pero lo incluí para mostrar que los directorios deben aparecer antes de las opciones.Con
-type
, puede filtrar por tipo de archivo, que se expresa comof
od
para archivos o directorios simples:Hay otros valores de filtro para
-type
, especialmentel
para enlaces simbólicos.Tenga en cuenta que hay una complicación con los enlaces simbólicos :
en este caso
l
, hay dos tipos de archivo: indicando un enlace simbólico y algo parecidof
, indicando el tipo de archivo vinculado. Hay opciones para especificar cómo manejar eso, para que pueda elegir.De
man find
:y relevante para el manejo de enlaces simbólicos:
y
fuente
Si está más preocupado por ordenar las carpetas de los otros tipos de archivos, puede ir con
de lo contrario, creo que tiene que canalizar la salida de ls -l a través de sort o grep como respondió Anthon
fuente
awk atrapará todo lo que comience con d. como d es para el directorio y necesita imprimir el último campo para enumerar el nombre del directorio
fuente
Esto ordenará el resultado de acuerdo con el orden alfabético de cada resultado. Si el primer personaje es el criterio que desea, eso es todo. Si solo necesita los nombres de archivo, puede probar:
O algo similar (ese comando ordena y luego divide cada línea usando el delimitador de espacio, luego devuelve el segundo grupo.
fuente