Ejecute Command ls
en el directorio actual y obtenga el resultado:
$ ls
Applications Documents Library Music Public
Desktop Downloads Movies Pictures
Me gustaría enumerarlos como:
1. Applications
2. Desktop
3. Documents
4. Downloads
5. Library
6. Movies
7. Music
8. Pictures
9. Public
Esto podría lograrse utilizando less
de manera intermedia
ls | less -N
¿Cómo enumerarlos de una manera directa?
command-line
Cálculo
fuente
fuente
Respuestas:
O simplemente hazlo:
de
man nl
:fuente
Debe canalizar la salida de
ls
a otro comando. Mi sugerencia es usarawk
de esta manera :Tenga en cuenta que el archivo
file\nnewline
contiene caracteres de nueva línea\n
en su nombre que la opción escapa-b
.la opción
--group-directories-first
mostrará los directorios antes que los archivos.Otra forma posible es usar for loop (pero en este caso colocar los directorios en el inicio de la lista será más difícil):
fuente
si solo se muestra un número, entonces tiene varias opciones como las siguientes, así como a su
less -N
manera:Si desea una numeración de salida personalizada, le sugiero que use
find
y haga lo que quiera imprimir:POSIXY, harías:
fuente
i
debe inicializarse de antemano:i=0; find ...
-exec sh -c '....'
se ejecuta bajo un shell sh separado.También puede hacer esto completamente con un breve script de Bash:
Incluso puede ser elegante y rellenar el número de línea para obtener más de 9 resultados:
Uso
Suponiendo que guardó el script como un archivo ejecutable
numbered-ls.sh
en el directorio de trabajo actual:El argumento
DIRECTORY
es opcional y por defecto es el directorio de trabajo actual.Explicación
Si se invocó el script con un argumento, cambie el directorio de trabajo a la ruta en el primer argumento.
Haga coincidir todas las entradas del directorio de trabajo actual y mírelas. Para cada entrada, incremente un contador e imprima su valor junto con el nombre de la entrada. Los caracteres de salto de línea en el nombre de la entrada se reemplazan con
^N
.Canalice la salida
cat -vt
para tratar con gracia los nombres de archivo que contienen caracteres no imprimibles que el terminal puede interpretar como caracteres de control.fuente