병렬 배치로 find 명령에 파일 사용

병렬 배치로 find 명령에 파일 사용

현재 폴더에서 디렉토리를 검색한 다음 압축하는 코드가 있습니다.

find . -type d -maxdepth 1 -mindepth 1 -print -exec tar czf {}.tar.gz {} \;

수백 개의 폴더가 있는데 현재는 하나씩 있습니다.

5개의 배치를 병렬로 실행할 수 있나요?

답변1

다음을 사용하여 xargs어느 정도의 병렬성을 달성할 수 있습니다 .

find . -type d -maxdepth 1 -mindepth 1 -print0 |
xargs -t0 -n 1 -P 5 -I XX tar czf XX.tar.gz XX

-P 5플래그는 시작되는 병렬 프로세스 수를 xargs5로 제한하고 -n 1한 번에 하나의 입력 라인만 사용하여 유틸리티를 실행하는 데 사용됩니다. -I XX입력 라인(디렉토리 경로가 됨) XX이 명령의 문자열을 대체해야 한다고 말합니다 .

xargstar이러한 호출이 이루어지면 호출을 인쇄합니다. -t닫으려면 삭제하세요 .

find디렉토리 경로 이름은 가능한 외부 이름을 허용하기 위해 with (예: 구분 기호로 사용 )에서 전달 -print0되고 수신됩니다.xargs-0\0


지적한대로이 사이트의 다른 답변에서:

작업의 병목 현상은 하드 드라이브일 수 있습니다. 따라서 작업을 두 개 이상의 프로세스로 분할하더라도 서로 다른 드라이브에서 실행되지 않는 한 더 빠르게 실행되지 않습니다.

관련 정보