Ну, я пытаюсь перечислить количество файлов, созданных сегодня и количество количество строк в тех файлах. Я должен сделать это в Unix. Предложите, как записать сценарий для этого.
Чтобы найти количество строк:
find / -type f -ctime 0 -mtime 0 -print0 | xargs -0 wc -l
Это почти то, что вам нужно. В Unix нет времени создания файла, это приблизительное значение со временем изменения статуса файла и временем изменения файла.
Если вы хотите искать только в определенном каталоге, замените /
на / путь / к / ваш / каталог
.
Чтобы узнать количество файлов:
find / -type f -ctime 0 -mtime 0 | туалет -l
find . -maxdepth 1 -daystart -ctime 0 -type f | xargs wc -l
Вам нужно будет изменить значение аргумента maxdepth
, если вам нужно посмотреть глубже.
Это найдет файлы ( -тип f
) в / path
, измененные за последние 24 часа ( -mtime -1
означает измененные за последние 1 день) и запустите wc -l
, чтобы подсчитать количество строк. {}
- это заполнитель для имен файлов, а +
означает передачу всех имен файлов за один вызов wc
.
find /path -mtime -1 -type f -exec wc -l {} +
Обратите внимание, что -ctime
, как предлагается в других ответах, - это время изменения, а не время создания. Это последний раз, когда менялись владелец файла, группа, количество ссылок, режим и т. Д. Unix не отслеживает время создания файла.
Трудно определить, когда файл был надежно создан. Mtime - это время, когда он был изменен, ctime - это время, когда данные inode были изменены (например, изменение разрешений), atime - это время последнего доступа к данным файла. Обычно mtime заменяет время create; когда файл создается, он записывает время создания (как и ctime и atime), но если файл впоследствии изменяется, mtime записывает время последнего изменения содержимого файла.
find . -mtime -1 -print0 | xargs -0 wc -l
Найдите все файлы в текущем каталоге со временем модификации менее 24 часов и отправьте имена в 'wc -l', допуская пробелы и другие нечетные символы в именах файлов.
Чтобы подсчитать количество файлов, измененных сегодня:
find . -daystart -type f -ctime -1 | wc -l
find
находит все файлы ( -тип 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
на самом деле не время создания, а время последнего изменения статуса файла. Я не думаю, что файловая система придерживается фактического времени создания.