ls 또는 파일 globbing에서 특정 파일이나 디렉터리를 무시할 수 있습니까?

ls 또는 파일 globbing에서 특정 파일이나 디렉터리를 무시할 수 있습니까?

ls 명령, 파일 globbing 및 grep 명령을 사용하는 데 문제가 있습니다. 다음 파일/디렉토리 트리를 고려하십시오.

abc/
    def
    ghi.txt
    jkl

def/
    f01
    abc
    abc.txt

ghi.txt

abc/ 디렉토리를 완전히 무시하고 다른 모든 것을 보고한다고 가정해 보겠습니다. 시도하면 ls -lR -Iabc ./def/abc.txt 파일이 보고되지만 /def/abc파일은 무시됩니다. 마찬가지로 ls -lR . | grep -v abc여기도 좋지 않습니다. Bash에서 내가 원하는 것을 할 수 있는 방법이 있나요?

ghi.txt또는 무시하고 보고 한다고 가정해 보겠습니다 abc/ghi.txt. Bash에서 이를 수행할 수 있는 방법이 있습니까?

답변1

Bash에서 확장 글로빙이 활성화된 경우 !(abc)를 사용하여 디렉터리를 역일치할 수 있습니다 abc. 전. 주어진

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

2 directories, 7 files

그리고

$ shopt extglob
extglob         on

그 다음에

$ ls !(abc)
ghi.txt

def:
abc  abc.txt  f01

관련 정보