Něco jako:
find /path/ -type f -exec stat \{} --printf="%y\n" \; |
sort -n -r |
head -n 1
Vysvětlení:
- příkaz find vypíše čas změny pro každý soubor rekurzivně ignorující adresáře (podle komentáře IQAndrease se nemůžete spolehnout na časová razítka složek)
- seřadit -n (číselně) -r (zpětně)
- head -n 1:získat první položku
Pokud máte verzi find
(například GNU find
), který podporuje -printf
pak není potřeba volat stat
opakovaně:
find /some/dir -printf "%T+\n" | sort -nr | head -n 1
nebo
find /some/dir -printf "%TY-%Tm-%Td %TT\n" | sort -nr | head -n 1
Pokud však rekurzi nepotřebujete:
stat --printf="%y\n" *
Kdybych mohl, hlasoval bych pro odpověď Paula. Vyzkoušel jsem to a pochopil koncept. Mohu potvrdit, že to funguje. find
příkaz může mít na výstupu mnoho parametrů. Například do --printf
přidejte následující klauzule:
%a for attributes in the octal format
%n for the file name including a complete path
Příklad:
find Desktop/ -exec stat \{} --printf="%y %n\n" \; | sort -n -r | head -1
2011-02-14 22:57:39.000000000 +0100 Desktop/new file
Dovolte mi také položit tuto otázku:Chce autor této otázky vyřešit svůj problém pomocí Bash nebo PHP? To by mělo být specifikováno.
Jak mohu s ohledem na dva adresářové stromy zjistit, které soubory se liší obsahem?
Malování pixelů na obrazovku přes Linux FrameBuffer