2

現在、mysql のバックアップを正常に実行しています。一部のサイトでは、このコマンドを使用して 7 日以上前のファイルを削除しています

find  /path/to/file -mtime +7 -exec rm -f {} \;

私は偏執的で、まだアーカイブされた情報が欲しいので、31日より古いファイルを削除しますが、前の月から少なくとも1つのファイルを維持し、おそらく1日に作成されたファイルを保存します今月の。

何か案は?

4

4 に答える 4

0

grep はほぼ正しいです。スペースが 1 つだけ多すぎます。これは機能します(少なくとも私にとっては、Debianを使用しています):

rm `find /path/to/file -type f -mtime +7 -exec ls -l {} + | grep -v ' [A-S][a-z][a-z]  1 ' | sed -e 's:.* /path/to/file:/path/to/file:g'`
于 2013-02-18T13:34:28.397 に答える
0

次のコマンドでファイルを作成できます。

SRC_DIR=/home/USB-Drive
DATE=$(/bin/date "+%4Y%2m%2d%2H%2M")
TIME_STAMP=$(/bin/date --date 'now' +%s)
TIME_CAL=$[$TIME_STAMP-2592000+25200] #last day, 25200 is my GMT+7hour 
TIME_LAST=$(/bin/date --date "1970-01-01 $TIME_CAL sec" "+%4Y%2m%2d%2H%2M")
/bin/touch -t ${TIME_LAST} /tmp/lastmonth
/usr/bin/find -P -H ${SRC_DIR}  ! -newer /tmp/lastmonth -type d -exec rm -r {} \;

削除したいものに基づいて最後のコマンドを変更できます。この場合、SRC_DIR のサブフォルダーを削除します。「時間属性」で 1 か月以上前。

于 2013-07-26T04:23:14.827 に答える
0

xargs を使用して、次のような内容を含むスクリプトを作成することもできます。

/path/to/files を検索 -mtime +7| xargs -i rm {};

次に、スクリプトをcronジョブに追加します

于 2013-02-13T22:34:51.300 に答える
-1

ちょっと醜いですが、の出力を解析してみることができますls -l

rm `find /path/to/file -type f -mtime +7 -exec ls -l {} + | grep -v ' [A-S][a-z][a-z]  1  ' | sed -e 's:.* /path/to/file:/path/to/file:g'`

または、スクリプトを作成してリストを取得rmし、一度に 1 つずつ実行します。

于 2012-08-30T22:25:53.677 に答える