получить количество файлов, измененных в прошлом месяце - PullRequest
7 голосов
/ 16 марта 2012

Я пытаюсь подсчитать, сколько PDF-файлов было создано в прошлом месяце.Я использую следующую команду, но она возвращает 0

find . -name '*.pdf' -mtime +46 ! -mtime +30 | wc -l

Я нахожусь в правильном каталоге, и кажется, что логика верна ... есть идеи, почему это не работает?Есть ли более простой способ, скажем, пропустить определенный месяц, который я ищу, вместо того, чтобы пытаться вычислять дни, подобные этому?

Ответы [ 3 ]

22 голосов
/ 16 марта 2012

Вы находите все pdf файлы:

  • 46 дней назад
  • не 30 дней назад

    x>46 && x<=30  --> false
    

Будет возвращен пустой результат.


   Numeric arguments can be specified as
   +n     for greater than n,
   -n     for less than n,
   n      for exactly n.

Если вы хотите найти все pdf файлы (30<x<46):

$ find . -name '*.pdf' -mtime +30 -mtime -46
8 голосов
/ 16 марта 2012

Если вы используете GNU find, вы можете указать абсолютные даты следующим образом:

find . -name '*.pdf' -newermt 2012-01-31 ! -newermt 2012-02-29 | wc -l

Опция -newermt позволяет найти файлы, которые были изменены позднее, чем абсолютное время.

Если вы не используете GNU, вы можете использовать touch, чтобы создать два файла с соответствующими временными метками и найти свои PDF-файлы, например так:

touch -t 201201312359 oldest # 11:59 PM 1/31/2012
touch -t 201203010000 newest # midnight 3/1/2012
find . -name '*.pdf' -newer oldest ! -newer newest | wc -l

Подробнее см. Документацию GNU .

6 голосов
/ 16 марта 2012

Вы, похоже, ищете файлы старше 46 дней, но не старше (то есть моложе), чем 30 дней.

А как насчет этого?

 find . -name '*.pdf' -mtime -46 -mtime +30
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...