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

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

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

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

저는 100개의 폴더를 가지고 있는데 현재는 폴더 하나씩 작업하고 있습니다.

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명령의 문자열로 대체해야 한다고 말합니다 .

xargs이러한 작업이 수행될 때 호출을 인쇄합니다 tar. -t이 기능을 끄려면 제거하세요 .

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


지적했듯이이 사이트의 다른 답변에서:

작업의 병목 현상은 하드 드라이브일 가능성이 높습니다. 이러한 이유로 작업을 두 개 이상의 프로세스로 분할하더라도 서로 다른 드라이브에서 작동하지 않으면 속도가 빨라지지 않습니다.

관련 정보