Jadi, saya ingin menampilkan ( ls
misalnya) semua file, yang diubah dalam tujuh hari terakhir. Jika saya berada di folder-docroot saya, seharusnya bisa terlihat "lebih dalam".
Sebagai contoh:
File Last changed
docroot
|- myfile1 30.11.2015
|- myfile2 10.11.2015
|- MySub
|-sub1 30.11.2015
|-sub2 10.11.2015
Jadi, ls
(atau apa pun yang cocok) harus di-output myfile1
dan (jika mungkin)
MySub/sub1
.
Apakah ini bisa dilakukan dengan satu perintah?
command-line
search
ls
DasSaffe
sumber
sumber
find
punyals
pilihan sehingga Anda bisa melakukannyafind . -type f -mtime -7 -ls
find ... -exec ls -l {} +
yang mengeksekusils -l
jauh lebih efisien - lebih sedikit kali dengan beberapa parameter. Ini adalah opsi standar yangfind
ditentukan oleh POSIX.Dengan
zsh
:**/*
akan mencari file secara rekursif mulai dari direktori saat ini(.m-7)
adalah glob qualifier di mana.
menunjukkan file biasa,m-7
menunjukkan file yang telah diubah dalam 7 hari terakhirsumber
Perintah berikut berfungsi di Mac OSX - mungkin juga di ubuntu ...
Ini menemukan file dalam pohon direktori saat ini yang telah dimodifikasi dalam 7 hari terakhir, menampilkan tanggal modifikasi + waktu dan jalur, disortir terbaru terlebih dahulu.
Contoh output:
Saya akan berterima kasih atas umpan balik dari pengguna ubuntu.
sumber
Tidak persis apa yang diminta ... tetapi lebih mudah diingat ...
atau
sumber
7 hari yaitu 60 detik * 60 menit * 24 jam * 7 hari = 604800 detik
Cari tahu tanggal saat ini dalam detik (Unix epoch time):
Kurangi 7 hari dalam hitungan detik:
Sekarang ambil
stat
perintah dan cetak statistik untuk semua file dalam format "nama + waktu dalam detik" dan gunakanawk
untuk memotong file-file yang waktu modifikasi lebih besar dari tanggal yang kami hitungYang paling menarik adalah 3 file terakhir, karena saya tahu saya mengerjakannya kurang dari 7 hari yang lalu. Jadi saya tahu itu berhasil
sumber
awk '$2 > 1448271265 {print $0}'
Anda bisa langsung mengatakannyaawk '$2 > 1448271265'
. Pada kondisi sebenarnya, awk mencetak baris saat ini sebagai tindakan default.