따라서 처음 1000번 다운로드한 후 5초 길이의 오디오 파일 5000개를 다운로드하려면 다음을 실행합니다.
find . -iname "*.wav" -exec play {} \;
명령을 처음 실행했을 때 있던 1000개의 파일만 재생합니까, 아니면 exec가 완료할 수 있는 것보다 파일이 더 빠르게 다운로드되기 때문에 5000개의 파일을 모두 재생합니까?
답변1
이는 구현에 따라 다릅니다.표준이론:
검색 중인 디렉터리 계층 구조에서 파일이 제거되거나 추가되는 경우 여부가 지정되지 않습니다.찾다검색에 파일을 포함합니다.
디렉토리 레이아웃과 파일 시스템 동작에 따라 두 가지 동작이 모두 발생할 수 있다고 생각합니다. find
항목을 읽기 위해 디렉토리를 연 후 새로 추가된 항목이 반환되는 경우 readdir
에도 find
이 문제가 처리됩니다 . 하지만 이것도 명시되어 있지 않다POSIX:
가장 최근 호출
opendir()
시 또는 그 이후에 파일이 제거되거나 디렉토리에 추가되는 경우rewinddir()
후속 호출이 해당 파일에 대한 항목을 반환하는지 여부readdir()
는 지정되지 않습니다 .
적어도 macOS에서 GNU 찾기 및 BSD 찾기를 사용할 때 동작은 디렉터리의 모든 항목을 한 번에 읽는 것 같습니다.
% (sleep 5; touch abc) & find . -exec sleep 5 \; -print
[1] 57727
.
[1] + 57727 done ( sleep 5; touch abc; )
./foo
./bar
어떻게 찾을 수 없는지 확인하세요 abc
. 그러나 첫 번째 것이 sleep
감소 하면 find
재귀는 다음과 같습니다..
뒤쪽에끝났어 sleep
:
% rm abc; (sleep 2; touch abc) & find . -exec sleep 5 \; -print
[1] 57971
[1] + 57971 done ( sleep 2; touch abc; )
.
./abc
./foo
./bar
따라서 파일이 다른 하위 디렉터리에 다운로드되면 find
실행 후 다운로드한 파일 중 일부는 재생될 수 있지만 일부는 재생되지 않을 수 있습니다.