~5k未満のファイルを削除

~5k未満のファイルを削除

私には12人の取締役がいます。

/home/imp/hpt/boxes/110.110.2.0/
/home/imp/hpt/boxes/115.115.16.0
/home/imp/hpt/boxes/1.154.10.0/
/home/imp/hpt/boxes/44.100.0.0/
/home/imp/hpt/boxes/46.1.100.0/

/home/imp/hpt/outbound/
/home/imp/hpt/outbound.002/
/home/imp/hpt/outbound.02c/
/home/imp/hpt/outbound.02e/
/home/imp/hpt/outbound.06e/
/home/imp/hpt/outbound.073/
/home/imp/hpt/outbound.38f/

各ディレクトリから5k未満のファイルを削除したいと思います。このファイルは数字*.mo? *.tu? *.we? *.th? *.fr? *.sa? *su?から?09

私はそれについて読んinotifywaitで、これを達成するためにそれを使用できるかどうか疑問に思います。可能ですか?

ありがとうございます。

編集:良いです。私が作成したいスクリプトは次のとおりですinotifywait。ご覧のとおり、私はそれほど遠くはありませんでした。

#!/bin/bash

dir1=/home/imp/hpt/boxes/110.110.2.0/
dir2=/home/imp/hpt/boxes/115.115.16.0/
dir3=/home/imp/hpt/boxes/1.54.10.0/
dir4=/home/imp/hpt/boxes/44.100.0.0/
dir5=/home/imp/hpt/boxes/46.1.100.0/
dir6=/home/imp/hpt/outbound/
dir7=/home/imp/hpt/outbound.002/
dir8=/home/imp/hpt/outbound.02c/
dir9=/home/imp/hpt/outbound.02e/
dir10=/home/imp/hpt/outbound.06e/
dir11=/home/imp/hpt/outbound.073/
dir12=/home/imp/hpt/outbound.38f/

inotifywait --daemon --outfile /home/imp/hpt/remove.log -m "$dir1" "$dir2" "$dir3" "$dir4" "$dir5" "$dir6" "$dir7" "$dir8" "$dir10" "$dir11" "$dir12" -e     delete |
    while read path action file; do
        for name in "$dir1'" "$dir2" "$dir3" "$dir4" "$dir5" "$dir6" "$dir7" "$dir8" "$dir9" "$dir10" "$dir11" "$dir12"

誰でも私を助けることができますか?

答え1

find . \( -name '*.mo[0-9]' -o -name '*.tu[0-9]' \) -size -5120c -delete

を使用することもできますが、愚かなsize -5kfindめを行うため、精度が低下します。

ただし、サイズは次の単位に丸められることに注意してください(したがって、1バイトファイルは-size -1Mと一致しません)。

答え2

inotifyそしてinotifywaitリアルタイムでファイルシステムの操作を監視します。生成されたファイルをキャプチャするために使用できますが、すでに存在するファイルを見つけるのには役立ちません。

私はあなたが既存のファイルを探したいと思います。 GNU findを使用すると、正規表現パターンを使用してそれを見つける式を少し圧縮できます。

$ find -type f -size -5120c -regextype awk -regex ".*\.(mo|tu|we|th|fr|sa|su)[0-9]" -delete

(サイズは5120バイトで、必要に応じて調整します。)

関連情報