私は以下のスクリプトを使用し、目的のためにdeleter.sh言う:
#!/bin/bash
myfunc()
{
local totalsize=0
echo " Removing files listed below "
echo "${@}"
sizes=($(stat --format=%s "${@}")) #storing sizes in an array.
for i in "${sizes[@]}"
do
((totalsize += i)) #calculating total size.
done
echo "Total space to be freed : $totalsize bytes"
rm "${@}"
if [ $? -eq 0 ] #$? is the return value
then
echo "All files deleted"
else
echo "Some files couldn't be deleted"
fi
}
export -f myfunc
find "$1" -type f -not -name "*deleter.sh" -mtime +60\
-exec bash -c 'myfunc "[email protected]"' _ {} +
# -not -name "*deleter.sh" to prevent self deletion
# Note -mtime +60 for files older than 60 days.
が
chmod +x ./deleter.sh
を行うと、
./deleter '/path/to/your/directory'
参考としてそれを実行
- 詳細は[ manpage ]を検索してください。
stat --format=%s
は、配列に格納されるバイト単位のサイズを示します。 [ stat ]マンページを参照してください。
フィードバックは、findと `{} +`言及する価値
ニース:)は、コマンドライン –
が、これは素晴らしいです、@sjsam私が働いていたものよりもはるかクリーナーをありがとう構築し感謝あなたが興味を持っているかもしれない場合に備えて、私が思いついたことがあります。 #!/ bin/bash date = $(date +%F) #findコマンドの出力でテキストファイルを作成します。 find -type f -mtime -60> /tmp/$date.text cp /tmp/$date.text/root #Reads $ dateファイルに含まれているファイルを削除します。 xargs -a /tmp/$date.text -d '\ n' rm – BasicsAG
You'rsははるかにクリーンで、私の行うファイルは作成しません。私は学ぶべきことがたくさんある!また、@mona_saxはあなたの情報に感謝します! – BasicsAG