--ignore를 사용할 때 ls 출력에서 ​​"빈" 폴더를 제외합니다.

--ignore를 사용할 때 ls 출력에서 ​​"빈" 폴더를 제외합니다.

보관 파일만 포함해야 하는 하위 폴더가 많은 폴더가 있고 다른 파일 형식이 있는지 확인하고 싶다고 가정해 보겠습니다.

나는 명령을 사용할 수 있습니다

ls -l -R /backup --ignore="*.zip" --ignore="*.7z"

그러면 필요한 정보가 표시되지만 각 폴더 이름도 포함됩니다.

/backup/2000/Jan:
total 0

/backup/2000/Feb:
total 0

무시된 파일만 포함된 폴더의 세부 정보를 제외할 수 있는 방법이 있습니까?

답변1

아카이브 파일만 포함해야 하는 하위 폴더가 많은 폴더가 있는데 다른 파일 형식이 있는지 확인하고 싶습니다.

이건 직업이 아닌 것 같아요 ls. 직업인 것 같아find. 아카이브 파일 패턴과 일치하지 않는 일반 파일을 나열하도록 요청하십시오.

find /backup -type f ! -name '*.zip' ! -name '*.7z'

파일명과 -ls동일한 정보를 보고 싶다면 맨 마지막에 추가하세요. ls -l(일부 구현에서는 사용할 수 없습니다 find.)

답변2

여러 가지 솔루션이 있습니다. 가장 간단한 방법은 아마도 쉘의 확장된 와일드카드 문자를 사용하는 것입니다.

shopt -s extglob
ls -l **/*!(.zip|.7z)

을 사용할 수도 있습니다 find.

find /backup -type f ! \( -name "*zip" -o -name "*7z" \)

첫 번째 명령은 숨겨진 디렉터리를 제외하지만 두 번째 명령은 제외합니다.

관련 정보