¿Es posible ignorar un archivo o directorio específico en ls o en la globalización de archivos?

¿Es posible ignorar un archivo o directorio específico en ls o en la globalización de archivos?

Tengo problemas para usar el comando ls, la globalización de archivos y el comando grep. Considere el siguiente árbol de archivos/directorios.

abc/
    def
    ghi.txt
    jkl

def/
    f01
    abc
    abc.txt

ghi.txt

Supongamos que quiero ignorar por completo el directorio abc/ e informar todo lo demás. Al intentarlo, ls -lR -Iabc .se informa el archivo /def/abc.txt pero se ignora el /def/abcarchivo. Del mismo modo ls -lR . | grep -v abctampoco sirve aquí. ¿Hay alguna manera de hacer lo que quiero en bash?

Alternativamente, supongamos que quiero ignorar ghi.txtpero informar abc/ghi.txt. ¿Hay alguna manera de hacer esto en bash?

Respuesta1

En bash, si está habilitado el globbing extendido, entonces podría usar !(abc) para hacer una coincidencia inversa del abcdirectorio. Ex. dado

$ tree
.
├── abc
│   ├── def
│   ├── ghi.txt
│   └── jkl
├── def
│   ├── abc
│   ├── abc.txt
│   └── f01
└── ghi.txt

2 directories, 7 files

y

$ shopt extglob
extglob         on

entonces

$ ls !(abc)
ghi.txt

def:
abc  abc.txt  f01

información relacionada