나는 수백 개의 디렉토리를 가지고 있는데, 각 디렉토리에는 다음과 같이 이름에 날짜가 포함된 파일이 있습니다.
$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