큰 트리를 스캔하고 전체 트리를 스캔하기 전에 결과를 다른 명령으로 전달하려는 경우 옵션은 무엇을 합니까? 내가 읽은 바에 따르면 그런 것 같지만 백그라운드 캐싱이 없는지 확인하고 싶습니다. for 루프를 사용할 수 있도록 백그라운드 캐시가 있는지 알고 싶습니다.
여러 파일에 대해 찾기를 실행할 때 디스크에 지연이나 스트레스가 없습니다. 자주 실행되고 긴 파일 목록을 처리하는 스크립트의 경우 find가 전체 목록을 다음 명령에 전달하는 데 몇 분 정도 걸릴 수 있습니다. find는 한 번에 하나의 파일에서만 실행하고 이전 -exec가 완료될 때까지 대상을 검색하지 않기를 원합니다.
답변1
여부를 묻는 것 같습니다.
find -exec some_command '{}' \;
some_command
백그라운드에서 다른 작업을 수행하지 않고 각 파일에 대해 순서대로 한 번씩 실행됩니다 .some_command
실제로 이것은 사실입니다.
그러나 이것이 하드 드라이브의 마모를 줄여줄 것이라고 생각하는 것 같습니다. 그렇지 않을 수도 있습니다. I/O를 여러 번 시작하고 중지하려면 한 번에 많은 양의 데이터를 읽는 것보다 더 많은 기계적인 움직임이 필요하므로 (매우약간) 기존의 회전형 하드 드라이브는 더 많은 마모를 경험합니다.
답변2
몇 가지 다른 접근 방식을 시도하고 명명된 파이프를 사용할 수 있습니다.파이프를 영구 프로세스로 시작하는 방법
원래:
- 명명된 파이프 만들기
- -exec 인수에서 사용하려는 프로세스를 시작하여 파이프에서 찾아서 읽습니다.
- 찾기 프로세스를 시작하고 결과를 파이프에 씁니다.
- 달성한 결과가 나머지 파일을 나열할 필요가 없다는 것을 의미하는 경우 프로세스를 제어하고 검색을 중지할 수 있습니다.