Çıkarılmış meşgul kutusuyla sistemde x günden eski dosyaları bulma


9

Geliştirme biriminde 1 haftadan eski dosyaları bulmam ve silmem gerekiyor. Bu ünitede sınırlı sayıda yardımcı program bulunmaktadır. -mtime findyüklemi mevcut değil. Bu durumda x günden daha eski olan tüm dosyaları nasıl kontrol edebilirim?


2
" mtimeMevcut değil " ile ne demek istediğiniz belli değil. Adını tanıdığım bir yardımcı program değil.
Kusalananda

/ path / to / my / folder $ find -type f -mtime +7 delete find: tanınmayan: -mtime
Ravi

kullandığınız linux dağıtımını paylaşın.
Siva

3
Meşgul kutusu olmadan inşa edilmiş gibi görünüyor FEATURE_FIND_MTIME. Is FEATURE_FIND_NEWERetkin? Mu find -neweriş? Senin mu testyarar veya [sizin içinde yerleşik shdesteği -nt?
Stéphane Chazelas

1
Bunları kullanabiliyorsanız bu touch -ddate +%s[ file -nt other-file ]
sorunu çözebilirsiniz

Yanıtlar:


11

-mtimestandart bir yüklem find(aksine -delete) ancak bir sürümüne soyunmuş varmış gibi görünüyor busybox, FEATURE_FIND_MTIMEözellik yapı anda devre dışı bırakılmıştır.

Meşgul kutusunu etkin durumdayken yeniden oluşturabilirseniz, şunları yapabilmeniz gerekir:

find . -mtime +6 -type f -exec rm -f {} +

Veya FEATURE_FIND_DELETEetkinleştirilmişse:

find . -mtime +6 -type f -delete

Değilse, bir haftalık değişiklik süresine ayarlanmış bir dosyada başka seçenekler kullanmak find -newer( FEATURE_FIND_NEWERetkin olduğu varsayılarak ) olabilir.

touch -d "@$(($(date +%s) - 7 * 86400))" ../ref &&
  find . ! -type f -newer ../ref -exec rm -f {} +

Ya da -newermevcut değildir ama sh's [destekleri -nt:

touch -d "@$(($(date +%s) - 7 * 86400))" ../ref &&
  find . ! -type f -exec sh -c '
    for f do
      [ "$f" -nt ../ref ] || printf "%s\0" "$f"
    done' sh {} + |
    xargs -0 rm -f

1
Evet, busybox burada daha hafif bir versiyonuydu. Yeniden inşa ettikten sonra find . -mtime +6 -type f -exec rm {} \;benim için çalıştı
Ravi

2

Gönderen man find:

-atime n

Dosyaya en son 24 saat önce erişildi. Bul, dosyaya en son 24 saatlik süreye kaç kez erişildiğini anladığında, herhangi bir kesirli parça göz ardı edilir, bu nedenle -atime +1 ile eşleşmek için en az iki gün önce bir dosyaya erişilmiş olmalıdır.

-krim n

Dosyanın durumu en son n * 24 saat önce değiştirildi. Yuvarlamanın dosya durumu değişiklik sürelerinin yorumlanmasını nasıl etkilediğini anlamak için -atime için yorumlara bakın.

Silmek istediğiniz dosyaların kullanım durumlarına bağlı olarak, bunlar için tek seçeneklerinizdir find. Neden mevcut mtimedeğil? Hangi dosya sistemini kullanıyorsunuz? Başka seçenekleri keşfettiniz mi?


OP hakkında daha fazla soru sormak cevaplar değil, açıklayıcı yorumlar olarak yapılmalıdır .
Jeff Schaller
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.