SORU
6 NİSAN 2011, ÇARŞAMBA


Nasıl yinelemeli olarak bulmak ve alt dizinleri ve saatleri ile bir dizindeki en son değiştirilen dosyaları listeler.

İşletim sistemi: Linux

Dosya türü: ext3

Tercih edilen çözüm: bash (komut/oneliner), ruby, python

Bunları birkaç alt dizinleri ve dosyaları ile birkaç dizinleri var. Ben bir liste tüm bu dizinler oluşturulur bir yol gibi her birinci düzey dizin listede bir sonraki için tarih ve saat en son oluşturulan/değiştirilmiş bir dosya içinde.

Ben bir dosya touch veya içeriğini birkaç alt seviyeleri aşağı değiştirirseniz netleştirmek için, bu zaman damgası, birinci düzey dizin adının yanında görüntülenir. Bir dizinin böyle: yapısal var

./alfa/beta/gamma/example.txt

ve ben dosya içeriğini '' zaman birinci düzey 'alfa' insan okunabilir biçimde, epoch. dizinin yanında görüntülenen ihtiyacım var example.txt değiştir Denedim bazı şeyleri kullanarak, xargs, sıralama ve seviyor ama ben alamıyorum sorunu bu dosya zaman damgası 'alfa' değiştirmez ben oluştur/Düzenle dosyaları birkaç kat aşağıda.

CEVAP
16 EYLÜL 2011, Cuma


Şunu deneyin:

#!/bin/bash
find $1 -type f -exec stat --format '%Y :%y %n' "{}" \; | sort -nr | cut -d: -f2- | head

Özyinelemeli (boşluk içeren dosya adlarını destekler) tarama başlayacaktır dizini yolu ile çalıştırmak.

Dosyaları bir sürü şey dönmeden önce biraz zaman alabilir. Performans ise adları boşluklarla dosyaları desteği bizde olsa geliştirilebilir. Bu durumda kullanabilirsiniz:

#!/bin/bash
find $1 -type f | xargs stat --format '%Y :%y %n' | sort -nr | cut -d: -f2- | head

biraz daha hızlı olan.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jack Vale Films

    Jack Vale Fi

    8 ŞUBAT 2007
  • martin shervington

    martin sherv

    7 EKİM 2011
  • The Bad Tutorials

    The Bad Tuto

    6 EKİM 2009