0

「date-2012-01-01_12_30」という名前のサブフォルダー内のすべてのフォルダーを削除する再帰スクリプトを作成する必要がありますが、最新の 2 つを残します。

/var/www/temp/updates/ 次に、「日付」および「コード」別の数百のフォルダー

例えば

/var/www/temp/updates/2012-01-01/temp1/date-2012-01-_12_30
/var/www/temp/updates/2012-01-01/temp1/date-2012-02-_13_30
/var/www/temp/updates/2012-01-01/temp1/date-2013-11-_12_30
/var/www/temp/updates/2012-01-01/temp2/date-2012-01-_12_30

検索を使用してフォルダーを取得することを考えていましたが、スクリプトが日付を知る必要があるため、削除できるフォルダーを知る方法がわかりません-フォルダーはそのサブフォルダーにあり、どのフォルダーが最新のものですか

うーん、どんな助けでもいいですか?

コード:

$PATH=/var/www/temp/updates/*/*
find $PATH -type d -name "date-*" -printf '%T@ %p\n' | sort -n | head -n -2 | cut -f2- | xargs ls -l

スクリプトは、何千もの異なるフォルダーを通過し、最新の 2 つのフォルダーを保持する必要があります。ここの誰かが以前に助けてくれましたが、何千ものフォルダーを検索できるように変更していません。

4

2 に答える 2

0

このスクリプトを試すことができますか

PATH1=/var/www/temp/updates
find $PATH1 -iname "date-*" -print0 | ls -tr | tail -2 | xargs -I file rm -fr file

ありがとう

于 2013-03-25T13:52:16.567 に答える
0

実際、検索は/updates/の下のすべてのフォルダーを通過するため、スクリプトは正常に機能すると思います

$PATH=/var/www/temp/updates/*/*
find $PATH -type d -name "date-*" -printf '%T@ %p\n' | sort -n | xargs rm -rf
于 2013-03-25T14:04:06.543 に答える