특정 파일 이름이 포함되지 않은 디렉터리 이름을 나열하는 방법은 무엇입니까? [복사]

특정 파일 이름이 포함되지 않은 디렉터리 이름을 나열하는 방법은 무엇입니까? [복사]

나는 수백 개의 디렉토리를 가지고 있는데, 각 디렉토리에는 다음과 같이 이름에 날짜가 포함된 파일이 있습니다.

$cd dir1
$ls 
20190915.file.gz
20190916.file.gz
20190917.file.gz
...

가끔 특정 폴더에 특정 파일이 생성되지 않는 경우가 있습니다. 이전 예제를 계속해서 파일20190916.file.gzdir2에서 누락되었을 수 있습니다.

$cd dir2
$ls
20190915.file.gz
20190917.file.gz
...

다음을 포함하지 않는 디렉토리 이름만 나열하려면 어떻게 해야 합니까?20190916.file.gz?

$find . | grep 20190916이 파일이 포함된 모든 폴더를 나열하므로 기본적으로 이 명령의 출력을 어떻게든 반대로 하면 됩니다.

답변1

디렉터리가 중첩되지 않았다고 가정하고 디렉터리를 반복하면서 각 디렉터리에 파일이 있는지 확인합니다.

for d in */; do
  if ! [ -e "$d/20190916.file.gz" ]; then
    echo "Missing $d/20190916.file.gz"
  fi
done

관련 정보