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

これにより、必要なすべてのファイルが別々のサブフォルダに保存されます。

おすすめ記事