¿Es posible agregar una excepción con "ls -l *"?

¿Es posible agregar una excepción con "ls -l *"?

¿Es posible hacer, por ejemplo: ls -l *imprimir el contenido de todo un directorio? Y agregue una excepción, por ejemplo, test.cpp para imprimir todos los archivos excepto el test.cpp.

Respuesta1

Puedes hacerlo con un globo si lo tienes extglobhabilitado. Puedes habilitarlo con:

shopt -s extglob

Y puedes usarlo como:

ls -l !(test.cpp)

y también se puede utilizar de otras maneras:

ls -l !(*.jpg) # list all files that don't have .jpg extensions

Dado que se trata de un shell global, también se puede utilizar con otros comandos. Un efecto secundario, sin embargo, es que hace que los subdirectorios se enumeren explícitamente, lo que significa que eso lstambién los enumeraría. Pero eso se puede manejar fácilmente con:

ls -ld !(test.cpp)

Respuesta2

La forma clásica (¿ingenua?) de hacer esto sería

  ls -l * | grep -v test.cpp

Sin embargo, como comentó Lamar, GNU lstiene opciones para ignorar ciertos nombres de archivos.

  ls -l -I test.cpp *

Nota ls -l *enumera los archivos en el directorio actualy archivos en subdirectorios de primer nivel. Quizás quisiste decir ls -lsin*

información relacionada