Belirli bir ayda oluşturulan ve sahibi için okunabilen dosyaları hangi komut listeler?


2

Eylül ayında oluşturulan ve sahibi tarafından okunabilen tüm dosyaları listeleyen komutu bulmam gerekiyor. Ayrıca komutun nasıl çalıştığını da açıklayın.

Kullanmam gerektiğini biliyorum

ls -l

ve kullanacağım | İçinde bir yerde ama borunun önüne ne geldiğinden ve ne sonrasında olduğundan emin değil.


3
İçine bakmak gerekir find Komut. Ayrıca, ayrıştırma girişiminde bulunmayın ls - görmek mywiki.wooledge.org/ParsingLs .
ziesemer

2
Bence StackExchange insanlarından ödevlerini senin için yapmalarını istemek kurallara aykırı değil. Ama kendin yapmazsan nasıl öğreneceksin?
Isaac Rabinovitch

1
Öncelikle, dosyalar üzerindeki zaman damgalarıyla uğraşırken genellikle uğraştığınız şeyin 'değiştirme zamanı' olduğunu unutmayın. İki zaman daha var: 'zaman değiştir' ve 'erişim zamanı'. Bunlar sırasıyla mtime, ctime ve atime olarak da bilinir. Unix dosya sistemlerinde 'yaratma' zamanı yoktur (veya en azından gördüğümden değil)
Cameron Kerr

'Dokunma' komutu için 'bilgi' sayfası 'değişim zamanını' açıklamada yararlıdır: "inode değişim zamanı, dosyanın meta bilgilerinin en son değiştirildiği zamanı gösterir. ." Söyleyecek başka şeyleri de var. Yararlı bir başka 'bilgi' sayfası 'tarih' komutudur - size --date argümanını nasıl belirleyeceğiniz konusunda fikir verecektir. 'Bilgi' sayfalarını okumak bazen çok yararlıdır ...
Cameron Kerr

Yanıtlar:


1

Tarih aralığı için bir numara kullanabilirsiniz. İlk önce böyle dokunuşla iki yapay dosya oluşturun:

touch -t 201209010000 /tmp/1sept
touch -t 201209302359 /tmp/30sept

Kontrol edebileceğiniz gibi, şimdi istenen oluşturma tarihlerine sahipler:

$ ls -l 1sept 30sept 
-rw-rw-r-- 1 topr topr 0 Sep  1 00:00 1sept
-rw-rw-r-- 1 topr topr 0 Sep 30  2012 30sept

Şimdi son komutla gitmeye hazırsınız:

find /thepath/you/like -type f -newer /tmp/1sept -and ! -newer /tmp/30sept -exec stat -c '%A %n' {} \; | grep '^.r'

Biraz açıklama:

  • -tipi f sadece dosyaları ara
  • -daha yeni ! -ve -newer şablon kümesi tarihleri ​​gibi kukla dosyaları kullanma aralığı
  • -exec, {} \; ile yazılmış bulunan her dosyaya bir komut verir.
  • stat komutu dosya hakkında bilgi yazdırır,% A, -rw-rw-r-- gibi insan tarafından okunabilen erişim hakları dizesi anlamına gelir ve% n dosya adını yazdırır
  • grep '^ .r' süzgeci, yalnızca ondan başlayan satırları göstermek için normal istisnalarla sonuçlanır & lt; anycharacter & gt; r, bu nedenle dosya sahibine okuma erişimi verilip verilmediğini kontrol eder.

Bunun haricinde ls -l | grep "^r.*Sep" Aynı sonucu olacak ve çok daha hızlı.
mikebabcock

0

ls -lh dosyaları okunabilir uzun formatta listelemelisiniz (kabuğuna bağlı olarak).

Şimdi istiyorsun grep (Bu bir filtre programıdır) aradıklarınızla eşleşenler için.

Örneğin, David ve 2011 yılında yapılan tüm dosyaları bulmak için şunları kullanabilirim:

ls -lh | grep "david" | grep "2011"

(Evet, bunu yapmanın daha hızlı ve kolay yolları var, ancak fikir asker için basit olmalı).

Sizin durumunuzda, hem okunan bit için ilk metin bloğunu hem de Eylül ayındaki tarihi filtrelemek istiyorsunuz. Çıkışına bir göz atın ls -lh Ve işe yarayan kendi grep komutunu yapabilmelisin.


-1

Bunu dene. Umarım yardımcı olur:

ls -la | grep -e "Sep"

2
Lütfen bu komutun ne yaptığını ve neden önerdiğinizi açıklamak için bu cevabı düzenlemeyi düşünün. Soru sahibi açıkça ne yapacağını ve nedenini bilmiyor. Rehberliğiniz muhtemelen çok yardımcı olacaktır.
Anaksunaman
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.