Во-первых, если существует файл, имя которого начинается с 7
и заканчивается на 365
в текущем каталоге, 7*365
заменяется на имя (имена) соответствующего файла (ов).Чтобы гарантировать, что find
видит 7*365
, подстановочный знак должен быть защищен, например, find -mtime '7*365'
или find -mtime 7\*365
.
Тогда я никогда не видел реализацию find, которая принимает арифметические выражения.Только неотрицательное целое число в десятичном виде (GNU find также принимает шестнадцатеричное с начальным значением 0x
) с необязательным начальным значением -
или +
.На справочной странице AIX указано, что требуется «десятичное целое число» (с необязательным начальным значением -
или +
).У меня нет AIX здесь для тестирования, но с 7*365
я бы ожидал ошибку, или если целочисленный синтаксический анализатор очень небрежный, он может быть проанализирован как 7 или 0.
Для поиска файловкоторые были изменены почти 7 лет назад, вам нужно указать оболочке выполнить арифметику: find -mtime $((7*365))
.
Модифицированная версия того, что вы написали, что делает , работает следующим образом:
typeset -i interval
interval=7*365
find … -mtime "$interval"
Работает без кавычек и на interval
(если IFS
не содержит цифру).Это работает потому, что typeset -i
объявляет interval
как целочисленную переменную.Когда вы присваиваете значение interval
, оболочка выполняет арифметику, поэтому interval
получает значение 2555
.Это работает только под ksh и bash, а не под обычным sh.