No sé si lses capaz de mostrar una columna de tipo de archivo.
Hacer una búsqueda rápida en línea y buscar en el manno reveló tal capacidad. ¿Es capaz de hacer esto?
Aclaración: Esto es especialmente útil si los archivos no tienen una extensión.
Actualizar
A partir del 28/04/2018, las respuestas han sido bastante interesantes, sin embargo, no proporcionaron lo que estaba buscando. Más específicamente,
fileda los tipos de archivo reales pero no se integra bien con ellosls. Específicamente, yo usols -lhtrpG --group-directories-first --color=alwaysls -Fes unalssolución, sin embargo, proporciona símbolos, no una columna de tipos de archivo reales.
Por esta razón, no he marcado ninguna de las respuestas como la respuesta que estoy buscando.
command-line
ls
usuario10853
fuente
fuente

ls -lahtrpF --group-directories-first --color=always /devols -lsahG /dev, y para lectura de programals -lsa /dev. verman lsdocumentación para más detalles.Respuestas:
filedefinitivamente es la opción correcta para obtener la información del tipo de archivo que desea. Para combinar su salida con la delssugiero usarfind:Esto encuentra todos los archivos en el directorio actual e imprime la salida
ls -dilsy la salida defile -bcada uno en una línea propia. Salida de ejemplo:Pero, como no desea una línea de tipo de archivo , sino una columna de tipo de archivo , aquí hay una manera de deshacerse del carácter de nueva línea entre las líneas:
Salida de muestra:
Esa nueva columna es bastante larga, así que vamos a cortar todo desde la primera coma:
La salida de eso se ve así:
Esto no es muy útil, así que ¿qué tal un
alias? Con la siguiente línea en su~/.bash_aliasesarchivo solo necesita ejecutarlsfpara obtener el resultado anterior para el directorio actual.fuente
pasteocolumn, podría obtener una mejor alineación:lsf () { find -maxdepth 1 -type f -exec bash -c 'column <(ls -l "$@") <(file -b "$@" | cut -d, -f1)' _ {} + ; }el problema de alineación no es evidente en la respuesta debido a los tamaños y fechas similares. (Esto también será un poco más rápido, ya que los comandos se invocarán menos veces en lugar de una vez por archivo.)columnenfoque funciona para usted? Simplemente imprime la salida dels -lcada archivo seguido defilela salida de cada archivo para mí, como si el shell simplemente hicierals -l "$@"; file -b "$@" | cut -d, -f1.../etc.columnla salida no está en el terminal, debe especificar el recuento de columnas o los archivos se mostrarán uno tras otro; entoncescolumn -c "$COLUMNS" ...debería funcionar en cualquier caso.Creo que la mejor manera de mostrar un tipo de archivo es usar este comando:
Si desea enumerar los tipos de todos los archivos en un directorio, simplemente use:
Para obtener más detalles sobre los argumentos, consulte:
fuente
mime typeúnica, utilice:file --mime-type filename.filebastante bien, pero esta pregunta es diferente.filerespuesta. Como respondí a los demás, esto no es suficiente (debe integrarse con ls), así que lo mantengo en una votación. Gracias.file --mime /dev/*para listar mimos en el directorio / dev en lugar de actualPara mayor claridad, voy a señalar que puede ver el tipo de archivo en un sentido básico con
ls, usando la-Fbandera (clasificar) que agrega un símbolo al nombre de archivo dependiendo de su tipo:Sin
ls -lembargo, puede ver esa información un poco menos crípticamente mostrada en la primera letra de la salida de . La respuesta de wjandrea describe esto con más detalle.Pero no creo que esto sea lo que quiere decir con tipo de archivo. El
lscomando no busca dentro de los archivos normales, solo en las listas de directorios (que almacenan nombres de archivos) e inodes (que almacenan metadatos, incluido el "tipo" en el sentido mencionado anteriormente).Entonces, el
lscomando no puede mostrar el tipo de archivo en el sentido de si es una imagen JPG o un archivo binario o un archivo de texto o un documento de LibreOffice de algún tipo, porque no tiene esa información.Para eso, como señala la respuesta de singrium , necesita el
filecomando, que analiza los primeros 50-100kB más o menos del contenido de los archivos para determinar su tipo.fuente
Una forma de tipo de archivo es si un archivo es un archivo normal, un directorio, dispositivo, enlace simbólico, etc.
lspuede mostrar esto usando las opciones-lo-F.La opción
-lmostrará el tipo de archivo como un solo carácter al comienzo de una lista, por ejemplo:Donde
-es un archivo normal,des un directorio yles un enlace simbólico.La opción
-Fmostrará el tipo de archivo como un sufijo, por ejemplo:Donde ningún sufijo es un archivo normal,
/es un directorio y@es un enlace simbólico.Más información sobre estos está disponible en
info coreutils 'ls invocation', resumido aquí:Para
-l:Para
-F:fuente