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`?