![.lzo 파일을 병렬로 추출한 다음 원본 .lzo 파일을 삭제합니다.](https://linux55.com/image/74809/.lzo%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EB%B3%91%EB%A0%AC%EB%A1%9C%20%EC%B6%94%EC%B6%9C%ED%95%9C%20%EB%8B%A4%EC%9D%8C%20%EC%9B%90%EB%B3%B8%20.lzo%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%82%AD%EC%A0%9C%ED%95%A9%EB%8B%88%EB%8B%A4..png)
그래서 해당 폴더 .lzo
에 있는 파일의 /test01/primary
압축을 풀고 모든 파일을 삭제해야 합니다. .lzo
폴더에서도 동일한 작업을 수행해야 합니다 . 두 폴더에 약 150개의 파일이 있으므로 총 300개의 파일이 있습니다./test02/secondary
.lzo
명령줄에서 다음과 같이 실행하여 하나의 파일을 압축 해제합니다. lzop -d file_name.lzo
모든 파일의 압축을 풀고 두 폴더에서 모든 파일을 삭제하는 가장 빠른 방법은 무엇입니까? 나는 다음 코드를 생각해 냈습니다..lzo
.lzo
#!/bin/bash
set -e
export PRIMARY=/test01/primary
export SECONDARY=/test02/secondary
lzop -d $PRIMARY/* & lzop -d $SECONDARY/*
find $PRIMARY $SECONDARY -name '*.lzo' -delete
.lzo
파일의 압축을 동시에 풀고 .lzo
두 폴더의 모든 파일을 동시에 삭제하여 프로세스 속도를 높일 수도 있습니다. 더 좋은 방법이 있나요?
답변1
매뉴얼 페이지에 따르면:
-U, --unlink, --delete
Delete input files after succesful compression or decompression.
그래서 당신은 간단히 실행할 수 있습니다
lzop -dU -- {"$PRIMARY","$SECONDARY"}/*.lzo
lzo
추출 성공 후 즉시 각 파일을 삭제하십시오.
lzop
단일 스레드이므로 병렬 처리를 원할 경우 다음을 사용할 수 있습니다 gnu parallel
.
parallel lzop -dU -- ::: {"$PRIMARY","$SECONDARY"}/*.lzo
답변2
GNU Parallel은 GNU Parallel에 할당된 순서대로 작업을 생성합니다. 따라서 $PRIMARY 파일을 먼저 나열한 다음 $SECONDARY 파일을 나열하면 $PRIMARY 파일이 먼저 처리됩니다.
~하지 않는 한 --shuf
주어진. --shuf
매개변수를 실행하기 전에 섞습니다. 매번 $PRIMARY 파일을 받은 다음 $SECONDARY 파일을 받을 수는 없지만 적어도 순서는 무작위입니다.