Jednoduše, vzhledem k tomu, že jste označili linux, máte stat dostupný příkaz, který extrahuje čas úpravy souboru a GNU date příkaz, který vyjme hodinu z daného času:
find . -type f -exec sh -c '
h=$(date -d @$(stat -c %Y "$1") +%-H); [ "$h" -ge 11 ] && [ "$h" -lt 15 ]' \
sh {} \; -ls
Pokud výsledky vypadají správně, pak:
find . -type f -exec sh -c '
h=$(date -d @$(stat -c %Y "$1") +%-H); [ "$h" -ge 11 ] && [ "$h" -lt 15 ]' \
sh {} \; -delete
Zde je zkušební provoz s -ls verze:
$ touch -d 'Wed Sep 12 11:00:01 EDT 2018' 11am
$ touch -d 'Wed Sep 12 12:00:02 EDT 2018' 12pm
$ touch -d 'Wed Sep 12 15:00:03 EDT 2018' 303pm
$ find . -type f -exec sh -c 'h=$(date -d @$(stat -c %Y "$1") +%-H); [ "$h" -ge 11 ] && [ "$h" -lt 15 ]' sh {} \; -ls
1705096 0 -rw-r--r-- 1 user group 0 Sep 12 2018 ./11am
1705097 0 -rw-r--r-- 1 user group 0 Sep 12 2018 ./12pm
Poděkování patří Kusalanandovi za napsání skvělé odpovědi, kterou jsem sledoval, na adrese:Porozumění možnosti -exec `najít`
Upozorňujeme, že neděláme chtít {} + verze find zde, jak chceme -exec výsledky budou pro každý soubor, takže odstraníme pouze soubory, které odpovídají časovému rozsahu.
Vložený skript shellu má dvě hlavní části:určit časové razítko „hodiny“ souboru a poté vrátit úspěch nebo neúspěch na základě rozsahu. První část se skládá ze dvou částí. Proměnné je přiřazen výsledek substituce příkazu; příkaz by měl být přečten zevnitř:
$(stat -c %Y "$1")-- tato (druhá) náhrada příkazu volástatna$1parametr vestavěného shell skriptu;$1byl přiřazenfindjako jednu z cest, kterou našel. Možnost %Y nastatpříkaz vrátí čas modifikace v sekundách-od-doby.date -d @ ... +%-H-- to trvá sekundy-od-doby z výše uvedeného nahrazení příkazu a zeptá sedateaby nám dal část hodin tohoto času;@syntaxe říkádateže tomu dáváme sekundy od epochy jako vstupní formát. S-možnost ve výstupním formátu data, říkáme GNU datum ne doplňte hodnotu libovolnými úvodními nulami. Tím se zabrání pozdější nesprávné interpretaci osmičkové soustavy.
Jakmile máme $h Hodinová proměnná přiřazena, používáme bashův podmíněný operátor [[ zeptat se, zda je tato hodnota větší nebo rovna 11 a také striktně menší než 15.