Как посчитать количество строк в файлах, созданных сегодня - PullRequest
1 голос
/ 07 мая 2010

Ну, я пытаюсь перечислить количество файлов, созданных сегодня, и подсчитать количество строк в этих файлах. Я должен сделать это в Unix. Пожалуйста, предложите, как написать скрипт для этого.

Ответы [ 5 ]

2 голосов
/ 07 мая 2010

Чтобы найти количество строк:

find / -type f -ctime 0 -mtime 0 -print0 | xargs -0 wc -l

Это почти , что вы хотите. В Unix нет времени создания файла, это приблизительное время изменения состояния файла и времени изменения файла.

Если вы хотите искать только в определенном каталоге, замените / на /path/to/your/dir.

Чтобы найти количество файлов:

find / -type f -ctime 0 -mtime 0 | wc -l

0 голосов
/ 07 мая 2010

Для подсчета количества файлов, измененных сегодня:

find . -daystart -type f -ctime -1 | wc -l

find находит все файлы (-type f) в текущем каталоге (.), созданные * (-ctime) за последнее время (-), чем один (1) день с начала этот день (-daystart). wc считает количество строк (-l) в выводе find.

Для подсчета строк в этих файлах:

find -daystart -type f -ctime -1 -print0 | wc -l --files0-from=-

Первая часть такая же, за исключением того, что find разделяет имена файлов с помощью нулей (-print0). wc считает строки (-l) в разделенных нулями файлах (--files0-from=) на его стандартном входе (-).

* ctime на самом деле не время создания, а время последнего изменения статуса файла. Я не думаю, что файловая система сохраняет фактическое время создания.

0 голосов
/ 07 мая 2010
find . -maxdepth 1 -daystart -ctime 0 -type f | xargs wc -l

Вам нужно изменить значение аргумента maxdepth, если вам нужно посмотреть глубже.

0 голосов
/ 07 мая 2010

Это позволит найти файлы (-type f) в /path, измененные за последние 24 часа (-mtime -1 означает изменение за последние 1 день), и запустить wc -l для подсчета количества строк. {} является заполнителем для имен файлов, а + означает, что все имена файлов передаются за один вызов wc.

find /path -mtime -1 -type f -exec wc -l {} +

Обратите внимание, что -ctime, как предлагается в других ответах, это время изменения, а не время создания. Это последний раз, когда был изменен владелец файла, группа, количество ссылок, режим и т. Д. Unix не отслеживает время создания файла.

0 голосов
/ 07 мая 2010

Определить, когда файл был надежно создан, сложно. Mtime - это время, когда оно было изменено, ctime - когда данные инода были изменены (например, изменение разрешений), atime - когда данные файла были доступны в последний раз. Обычно mtime является суррогатом для времени создания; когда файл создается, он записывает время создания (как ctime и atime), но если файл впоследствии изменяется, mtime записывает время, когда содержимое файла было изменено в последний раз.

find . -mtime -1 -print0 | xargs -0 wc -l

Найти все файлы в текущем каталоге со временем модификации менее 24 часов и отправить имена в 'wc -l' - с учетом пробелов и других нечетных символов в именах файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...