bash 스크립트를 gzip 파일로 변환

bash 스크립트를 gzip 파일로 변환

60일보다 오래된 파일을 gzip으로 압축하여 파일 이름 시작 부분에 명명된 하위 디렉터리로 이동하는 bash 스크립트를 만들어야 합니다. 다음은 내가 사용해야 하는 파일의 예입니다.

-rw-r--r-- 1 X X    0 2012-10-15 11:19 glux21-x1.csv
-rw-r--r-- 1 X X    0 2012-10-15 11:19 GLUX21-x34.csv
-rw-r--r-- 1 X X    0 2012-10-15 11:19 glux226.csv
-rw-r--r-- 1 X X    0 2012-10-15 11:19 glux228.csv
-rw-r--r-- 1 X X    0 2012-10-15 11:19 glux230.csv
-rw-r--r-- 1 X X    0 2012-10-15 11:19 glux232.csv
-rw-r--r-- 1 X X    0 2012-10-15 11:19 glux234.csv
-rw-r--r-- 1 X X    0 2012-10-15 11:19 glux236.csv
-rw-r--r-- 1 X X    0 2012-10-15 11:19 glux255.csv

따라서 예를 들어 glux21-x1.csv는 GLUX21-x34.csv 파일과 마찬가지로 gzip으로 압축하여 glux21 하위 디렉터리로 이동해야 합니다. glux255.csv는 glux255 하위 디렉터리에 있어야 합니다.

답변1

find . -ctime -60 -maxdepth 1 -type f | while IFS= read x
 do 
    gzip -9 "$x"  # compress it
    D=${x%%.csv}  
    D=${D/-*/}    # remove suffix and everything after the -

    mkdir -p "$D" # create dest sub folder
    mv $x.gz "$D"   # move it
done

그러면 필요한 모든 파일이 별도의 하위 폴더에 저장됩니다.

관련 정보