Я использую linux и какое-то время пытался выяснить команду find, чтобы иметь возможность перечислить каталоги, измененные за 24 часа определенное количество дней назад, но я не могу заставить ее работать. Среди прочего я пробовал:
find -type d -mtime +1 -mtime -2
Но он возвращает 0 совпадений, а find -type d -mtime +1
дает 16721 совпадение и find -type d -mtime -2
дает 120 совпадений. У меня должно получиться около 50-60 матчей.
Я также пробовал -a
вариант для AND
между ними, но это не имеет значения.
Аргументы в пользу -mtime
вариант найти немного нелогичен. По сути, вы просите «показать мне все, что было старше двух дней назад и моложе двух дней назад» ... вариант '+' немного шаткий (от find
(1)):
Когда find выясняет, сколько 24-часовых периодов назад к файлу последний раз обращались, любая дробная часть игнорируется, поэтому для соответствия -atime +1 файл должен быть доступен как минимум два дня назад.
Для однодневного диапазона вы можете просто использовать -mtime 2
, в противном случае я предлагаю использовать -mmin
и немного арифметики оболочки, чтобы добраться туда, куда вы хотите.
Я бы использовал сценарий:
STARTTIMEFILE=`mktemp` || exit 1
touch -d '2009-10-01 00:00' "$STARTTIMEFILE" || exit 1
ENDTIMEFILE=`mktemp` || exit 1
touch -d '2009-11-01 00:00' "$ENDTIMEFILE" || exit 1
find . -newer "$STARTTIMEFILE" -and -not -newer "$ENDTIMEFILE" -ls
rm -f "$STARTTIMEFILE" "$ENDTIMEFILE"
Намного легче понять, чем -mtime
.