Предполагая, что реализация find
в вашей Unix имеет предикат -maxdepth
(не является стандартом -, но часто доступен ), следующая команда find
сделает это:
find. -maxdepth 1 -type f -mtime +0
Это напечатает имена обычных файлов (, т. е. не каталогов, сокетов, именованных каналов и т. д. ), чья метка времени модификации была более 24 часов назад на терминале.
Если -maxdepth
нельзя использовать, рассмотрите
find. ! -name. -prune -type f -mtime +0 -print
Это означает:
find
смотрит, это , а не .
(! -name.
), текущий каталог, тогда find
(-prune
). Это останавливает find
даже от рассмотрения входа в какие-либо подкаталоги. -type f
), и -mtime +0
), то -print
). Относительно-mtime +0
:В вашей системе AIX см. примечание о семантике -mtime
, чтобы определить, следует ли использовать -mtime +0
или -mtime +1
. Если вам нужно поведение UNIX03, вы должны использовать -mtime +0
для поиска файлов с отметкой времени модификации более 24 часов назад (и установить переменные среды XPG_SUS_ENV
на ON
и XPG_UNIX98
на OFF
., в соответствии с примечанием в руководстве ).
По умолчанию find
выводит пути найденных файлов. Это означает, что вы получите имена файлов с префиксом ./
из приведенной выше команды. Если вы этого не хотите, вам придется вызывать утилиту basename
для каждого найденного имени файла.
Вы можете сделать это вот так:
find. ! -name. -prune -type f -mtime +0 -exec basename {} \;
В комментариях вы упомянули, что хотели бы сжать эти файлы. Для этого нет необходимости вызывать утилиту basename
.Просто вызовитеgzip
(или любую другую утилиту сжатия, которую вы хотели бы использовать вместо ):
find. ! -name. -prune -type f -mtime +0 -exec gzip {} +
В зависимости от того, хотите ли вы что-то сделать с этими файлами, вы можете поискать аналогичный вопрос на этом сайте, например. Почему зацикливание вывода find является плохой практикой?
Также связанные:
Что-то изменило маску ACL файла после его создания. Этого не должно быть. Я не могу сказать, как это могло произойти, но известно, что это происходит.
Любой вызов setfacl
для этого файла должен исправить это (, если --no-mask
не задано ). Вы также можете установить маску явно:
setfacl -m m:rw filename