Obvykle date +%d
dává výstup 08
k aktuálnímu datu 8.10.2017. Ale když udělám ls -lrt
na cestě je formát data jako Oct 8 15:03
, jak tedy získám soubory aktuálního data?
Používám příkaz
ls -lrt XYZ.LOG* |grep "$(date +'%b %d')" |awk '{print $9}'
ale nedává mi to soubor s dnešním datem (08/10/2017), i když mi dává správný výstup pro data 10 – 31 každého měsíce.
Přijatá odpověď:
Je to trochu podvádění, ale funguje to.
Nejprve vytvořte prázdný referenční soubor s konkrétním časovým razítkem, konkrétně půlnoc:
touch -d "$(date +%FT00:00:00)" /tmp/midnight
Potom vyhledejte soubory, které jsou novější než tento soubor:
find . -type f -newer /tmp/midnight
Pokud chcete ls
-jako výstup z find
spíše než jen názvy cest:
find . -type f -newer /tmp/midnight -ls
Pokud chcete najít soubory odpovídající vzoru XYZ.LOG*
:
find . -type f -name 'XYZ.LOG*' -newer /tmp/midnight -ls
Pokud máte GNU find
, můžete dočasný soubor obejít a použít
find . -type f -newermt 0
pro úpravu souborů od půlnoci.
Související:Proč *ne* analyzovat `ls`?