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

  • CZTUTORIALS

    CZTUTORIALS

    28 Ocak 2011
  • incognitotraveler

    incognitotra

    27 Mayıs 2010
  • Max Lee

    Max Lee

    18 AĞUSTOS 2006