Unix'te son bir saatte oluşturulan dosyalar nasıl bulunur


135

Unix'te son bir saatte oluşturulan dosyalar nasıl bulunur

Yanıtlar:


213

Aramaya dir ise srch_dirya o zaman

$ find srch_dir -cmin -60 # change time

veya

$ find srch_dir -mmin -60 # modification time

veya

$ find srch_dir -amin -60 # access time

son bir saat içinde oluşturulan, değiştirilen veya erişilen dosyaları gösterir.

düzeltme: ctime, düğüm zamanını değiştirmek içindir (yine de emin değil, lütfen beni düzeltin)


2
Bu harika ve hepsi ama bu bayraklar findbenim kullandığım Solaris'te mevcut değil . OP Unix dedi ve bunların sadece Linux olduğunu düşünüyorum.
jiggy

12
İşin püf noktası, negatif zaman değerleri kullanmaktır ! Man sayfasında o kadar açık değil.
sphakka

@jiggy Ayush'un cevabı-newer Solaris üzerinde çalışması gereken bir hack (temelli ) veriyor .
David Moles

3
-cmin oluşturma zamanı DEĞİLDİR, zamanı değiştirin! .config dir nedenimi sildim test çalıştırmasında son X dakika içinde değiştirilmedi ve rm yaptığımda değişmedi .... bu yüzden belki bunu düzenleyin ...!
Badmaster

Hala ilk örnek yorumun bir revizyona ihtiyacı olduğunu düşünüyorum. "değiştirme zamanı" dosya durumu, dosya verileri değil
KC Baltz

24

UNIX dosya sistemleri (genellikle) oluşturma zamanlarını saklamaz. Bunun yerine, yalnızca erişim zamanı, (veri) değişiklik zamanı ve (inode) değişim zamanı vardır.

Bununla birlikte find, -atime -mtime -ctimeyüklemlere sahiptir :

$ adam 1 bul
...
-ctime   n
        Birincil, son değişiklik zamanı ise doğru olarak değerlendirilir.
        başlatma süresinden çıkarılan dosya durumu bilgileri,
        86400'e bölünür (kalanlar atılır), n'dir.
...

Böylece find -ctime 0, bir saatten daha kısa bir süre önce inode'un değiştiği her şeyi bulur (örneğin, dosya oluşturmayı içerir, ancak aynı zamanda bağlantı sayısını ve izinleri ve dosya boyutunu da sayar).


86400 saniye bir saat değil bir gündür . Bu nedenle -ctimevb argümanı saat yerine gün birimindedir .
Gaylon

12

bu bağlantıya göz atın ve sonra kendinize yardım edin.

temel kod

#create a temp. file
echo "hi " >  t.tmp
# set the file time to 2 hours ago
touch -t 200405121120  t.tmp 
# then check for files
find /admin//dump -type f  -newer t.tmp -print -exec ls -lt {} \; | pg

Teşekkürler, ancak bu yalnızca t.tmp'yi arayacaktır. Ya son bir saatte oluşturulan tüm dosyaları bulmak istersem.
Ankur

2
Ankur: geçici bir t.tmp dosyası oluşturacak ve oluşturulma zamanını 2 saat öncesine ayarlayacaktır ... Bundan sonra t.tmp'den sonra yani son 2 saat içinde oluşturulan tüm dosyaları mevcut dizinde arayacaktır.
ayush

4
güzel!! İlk komut gerekli olmasa da. touchzaten yoksa dosyayı oluşturur.
Amir Uval


3
sudo find / -Bmin 60

Sayfadan man:

-Bmin n

Bir dosyanın inode oluşturma zamanı findile başlatılan zaman arasındaki fark , sonraki tam dakikaya yuvarlanmışsa, n dakika ise doğrudur .

Açıkçası, biraz farklı ayarlamak isteyebilirsiniz, ancak bu birincil, son N dakika içinde oluşturulan herhangi bir dosyayı aramak için en iyi çözüm gibi görünüyor .


find (GNU findutils) 4.6.0bir -Byüklemi yok
blockloop

0

Bunu kontrol et Daha fazla ayrıntı için bağlantıya göz .

Mevcut dizinde son bir saat içinde oluşturulan dosyaları bulmak için -amin kullanabilirsiniz

bul. -amin -60-tipi f

Bu, son 1 saat içinde oluşturulan dosyaları bulacaktır.

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.