다음이 포함된 폴더가 있다고 가정해 보겠습니다.. txt,.pdf및 기타 파일. "기타" 파일(예: 확장자가 없는 파일)을 나열하고 싶습니다.. txt또는.pdf). 이를 수행하는 방법에 대한 제안 사항이 있습니까?
특정 확장자 없이 파일을 나열하는 방법을 알고 있습니다. 예를 들어 목록을 작성하고 싶다면. txt파일을 만든 다음
find -not -iname "*.txt"
또는
ls | grep -v '\.txt$' | column
작동하는 것 같습니다. 그런데 어떻게 제외하고 나열할 수 있나요?. txt문서또는 .pdf문서? find
or 안에 일종의 논리적 "or"를 사용해야 하는 것 같습니다 grep
.
답변1
GNU 를 가정하면 ls
이것이 아마도 가장 쉬운 방법일 것입니다:
ls -I "*.txt" -I "*.pdf"
모든 하위 디렉터리를 반복하려면 다음을 수행하세요.
ls -I "*.txt" -I "*.pdf" -R
답변2
지원 찾기-o
find . ! '(' -name '*.txt' -o -name '*.pdf' ')'
올바른 우선순위를 보장하려면 괄호가 필요합니다. Find는 많은 일을 할 수 있습니다. 맨페이지를 읽어보는 것이 좋습니다.
또는 in을 수행할 수도 있습니다 grep
(그러나 실제로는출력을 구문 분석하면 안 됩니다.ls
)
ls | grep -Ev '\.(txt|pdf)$' | column
답변3
bash
확장된 와일드카드( open 사용 shopt -s extglob
) 를 사용하면 와일드카드가 !(*.txt|*.pdf)
작동합니다. .ls
답변4
find /path/to/directory '!' -name '*.pdf' '!' -name '*.txt'
이는 OR 연산자를 사용한 명령과 동일합니다.드모건의 법칙.