Если у кого-то findего нет -mminи если он застрял с a, findкоторый принимает только целочисленные значения -mtime, то не обязательно все потеряно, если учесть, что «старше чем» похоже на «не новее чем».
Если мы смогли создать файл, который имеет время отключения, мы можем спросить find найти файлы, которые «не новее» нашего эталонного файла.
Создание файла с правильной отметкой времени немного сложнее, потому что в системе, которая не имеет адекватной, findвероятно, также есть dateкоманда с меньшим количеством возможностей, которая может делать такие вещи, как: date +%Y%m%d%H%M%S -d "6 hours ago" .
К счастью, другие старые инструменты, которые могут управлять этим, хотя и более громоздким способом.
Учтите, что шесть часов - это 21600 секунд. Мы хотим найти время, которое шесть часов назад, в формате, который будет полезен:
$ date && perl -e '@d=localtime time()-21600; \
printf "%4d%02d%02d%02d%02d.%02d\n", $d[5]+1900,$d[4]+1,$d[3],$d[2],$d[1],$d[0]'
> Thu Apr 16 04:50:57 CDT 2020
202004152250.57
Оператор perl действительно дал полезную дату, но ее лучше использовать:
$ date && touch -t `perl -e '@d=localtime time()-21600; \
printf "%4d%02d%02d%02d%02d.%02d\n", \
$d[5]+1900,$d[4]+1,$d[3],$d[2],$d[1],$d[0]'` ref_file && ls -l ref_file
Thu Apr 16 04:53:54 CDT 2020
-rw-rw-rw- 1 root sys 0 Apr 15 22:53 ref_file
Теперь решение для этой старой UNIX выглядит примерно так:
$ find . -type f ! -newer ref_file -a ! -name ref_file -exec rm -f "{}" \;
Также может быть хорошей идеей очистить наш справочный файл ...
$ rm -f ref_file