bash 脚本到 gzip 文件

bash 脚本到 gzip 文件

我必须制作一个 bash 脚本,对超过 60 天的文件执行 gzip,并将其移动到一个子目录中,该子目录的名称是文件名的开头。这是我必须使用的文件的示例:

-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 应该被 gzip 压缩并移动到 glux21 子目录中,就像 GLUX21-x34.csv 文件一样。 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

这将处理您需要的所有文件,并将它们分别放入不同的子文件夹中。

相关内容