GNU/Linux >> Belajar Linux >  >> Linux

Temukan Usia File Tertua Dalam Satu Baris Atau Kembalikan Nol?

Saya ingin mencari usia file tertua di direktori tertentu atau mengembalikan 0 jika tidak ada file di direktori ini. Saya juga membutuhkan perintah satu baris untuk melakukannya. Sejauh ini ini adalah perintah saya untuk menemukan usia dalam detik dari file tertua di direktori:

expr $(($(date +%s) - $(stat -c %Y $(ls -lt /path/to/dir/ | tail -1 | awk '{print $NF}'))))

Masalahnya adalah jika tidak ada file, itu mengembalikan kesalahan berikut:

$ expr $(($(date +%s) - $(stat -c %Y $(ls -lt /path/to/dir/ | tail -1 | awk '{print $NF}'))))
stat: cannot stat ‘0’: No such file or directory
-bash: 1554373460 - : syntax error: operand expected (error token is "- ")

Jadi dalam hal ini saya ingin perintah untuk mengembalikan hanya 0 dan untuk menekan cetakan kesalahan.

Jawaban yang Diterima:

Jika harus satu baris:

stat -c %Y ./* 2>/dev/null | awk -v d="$(date +%s)" 'BEGIN {m=d} $0 < m {m = $0} END {print d - m}'
  • stat -c %Y ./* 2>/dev/null cetak stempel waktu semua file, abaikan kesalahan (jadi tidak ada file yang tidak menghasilkan apa-apa)
  • Dengan awk:

    • -v d="$(date +%s)" simpan stempel waktu saat ini dalam variabel d
    • BEGIN {m=d} inisialisasi m ke d
    • $0 < m {m = $0} melacak minimum dalam m
    • END {print d - m} cetak perbedaannya.

Linux
  1. Bagaimana Melewati Garis File?

  2. Bash Script Untuk Menghapus File Terlama Dari Folder A?

  3. Bagaimana Cara Memindahkan Garis Dalam File Teks Ke Atas Atau Ke Bawah Dengan Satu Baris?

  1. Bagaimana Cara Mendapatkan Jumlah Md5 Dari Isi Direktori Sebagai Satu Jumlah?

  2. Tidak Dapat Menemukan File Untuk Ditambal Pada Baris Input 3?

  3. Temukan N Kata Paling Sering Dalam File Dengan Daftar Kata Berhenti Dari Baris Perintah?

  1. Cara Menemukan File Terlama Di Pohon Direktori Di Linux

  2. Ubah ujung garis Unix ke Windows

  3. Bagaimana saya bisa menemukan file terlama di pohon direktori