最大50Mまでファイルを選択的に圧縮

最大50Mまでファイルを選択的に圧縮

data*選択したファイルの圧縮zipファイルが50 MBを超えないようにするすべてのファイルを選択し、日付ごとに最新のファイルを選択する必要があります。 Bashスクリプトでこれをどのように達成できますか?

答え1

あなたは次のようなものが欲しいでしょう

stat -c "%Y %n" data* | sort -rn | cut -d" " -f2- | 
while IFS= read -r file; do 
    if ! [[ -f my.zip ]]; then
        zip my.zip "$file"
    elif (( $(stat -c %s my.zip) < 50000000 )); then
        zip my.zip "$file"
    else 
        echo "zip file full"
        break
    fi
done

最初の行は、現在のディレクトリ内のファイルを変更時刻に基づいて最新の項目から古い項目の順に並べ替えます。

関連情報