![특정 파일 이름이 포함되지 않은 디렉터리 이름을 나열하는 방법은 무엇입니까? [복사]](https://linux55.com/image/161020/%ED%8A%B9%EC%A0%95%20%ED%8C%8C%EC%9D%BC%20%EC%9D%B4%EB%A6%84%EC%9D%B4%20%ED%8F%AC%ED%95%A8%EB%90%98%EC%A7%80%20%EC%95%8A%EC%9D%80%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%20%EC%9D%B4%EB%A6%84%EC%9D%84%20%EB%82%98%EC%97%B4%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
나는 수백 개의 디렉토리를 가지고 있는데, 각 디렉토리에는 다음과 같이 이름에 날짜가 포함된 파일이 있습니다.
$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