GNU/Linux >> Znalost Linux >  >> Linux

Najít věk nejstaršího souboru na jednom řádku nebo vrátit nulu?

Chci zjistit stáří nejstaršího souboru v určitém adresáři nebo vrátit 0, pokud v tomto adresáři nejsou žádné soubory. Potřebuji k tomu také jednořádkový příkaz. Zatím toto je můj příkaz pro zjištění stáří nejstaršího souboru v adresáři v sekundách:

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

Problém je, že pokud nejsou žádné soubory, vrací následující chybu:

$ 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 "- ")

Takže v tomto případě chci, aby příkaz vrátil pouze 0 a potlačil chybový výpis.

Přijatá odpověď:

Pokud to musí být jeden řádek:

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 vytisknout časové razítko všech souborů, ignorovat chyby (takže žádný soubor nevede k žádnému výstupu)
  • S awk:

    • -v d="$(date +%s)" uložit aktuální časové razítko do proměnné d
    • BEGIN {m=d} inicializovat m do d
    • $0 < m {m = $0} sledování minima v m
    • END {print d - m} vytisknout rozdíl.

Linux
  1. Jak posunout řádek v textovém souboru nahoru nebo dolů o jeden řádek?

  2. Nemůžete najít soubor k opravě na vstupním řádku 3?

  3. Najít N nejfrekventovanějších slov v souboru se seznamem stop slov z příkazového řádku?

  1. Jak najít nejstarší soubor ve stromu adresářů v Linuxu

  2. Jak zjistit typ souboru Img a připojit jej?

  3. Kódovat obsah souboru a echovat jej jako jeden řádek?

  1. Jak procházet řádky souboru?

  2. Bash skript k odstranění nejstaršího souboru ze složky?

  3. Najděte verzi WordPress z příkazového řádku