bash script para gzip files

0

Eu tenho que fazer um script bash que faça um gzip de um arquivo se tiver mais de 60 dias, e mova-o em um subdir que nome é o começo do nome do arquivo. Aqui está um exemplo dos arquivos com os quais tenho que trabalhar:

-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

Assim, por exemplo, o glux21-x1.csv deve ser gzipado e movido no subdiretório glux21, como no arquivo GLUX21-x34.csv. O glux255.csv deve ir no subdiretório glux255.

    
por ludiegu 15.10.2012 / 11:43

1 resposta

4
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

Isso processará todos os arquivos necessários e os colocará em subpastas diferentes respeitosamente.

    
por 15.10.2012 / 12:37

Tags