Найдите файлы меньше чем 1 неделей с соответствием TODO в файлах

Дескриптор файла → Открытый файл Описание → запись каталога
DUP Открыть CP CP

Существует несколько уровней косвествия при переходе от открытого файла в процессе, вплоть до содержимого файла. Реализация-мудрые, эти уровни обычно переводятся в структуры данных в ядре, указывая на следующий уровень. Я собираюсь описать простую реализацию; Реальные реализации могут иметь гораздо больше осложнений.

Открытый файл в процессе обозначен файловым дескриптором, который является небольшим неотрицательным целым числом. Числа 0, 1 и 2 имеют обычные значения: Предполагается, что процессы читают нормальный вход от 0 (стандартный вход), напишите нормальный выход на 1 (стандартный выход) и записывать сообщения об ошибках до 2 (стандартная ошибка). Это только конвенция: ядро ​​все равно. Ядро хранит таблицу открытых дескрипторов файлов для каждого процесса, отображает эти небольшие целые числа к структуре файловой дескриптора . В ядре Linux эта структура структура FD .

Структура дескриптора файлов содержит указатель на описание открытого файла . Там могут быть несколько дескрипторов файлов, указывающие на одно и то же описание открытого файла, из нескольких процессов, например, когда процесс вызвал DUP и друзей, или после того, как процесс развелся. Если файловые дескрипторы (даже в разных процессах) связаны с тем же оригиналом Open (или аналогичного) системного вызова, они разделяют одно и то же открытое описание файла. Описание файла открытого файла содержит информацию о том, как файл открыт, включая режим (только для чтения VS Read-Write, Append и т. Д.), Положение в файле и т. Д. Под Linux в Linux структура описания файла Структивный файл .

Описание открытого файла живет на уровне файла API. Следующий уровень находится в файловой системе API. Различие состоит в том, что файл API охватывает такие файлы, как анонимные трубы и розетки, которые не живут в дереве файловой системы. Если файл является файлом в дереве каталога, описание открытого файла содержит указатель на запись каталога . Может быть несколько описаний открытых файлов, указывающих на тот же вход каталога, если один и тот же файл был Opear Ed не раз. Запись каталога содержит информацию о том, что является файлом, включая указатель на его родительский каталог, а также информацию о том, где находится файл. В ядре Linux запись каталога разделена на два уровня: inode inode , который содержит файловые метаданные и Strack Dentry , который отслеживает откуда, где файл находится в дереве каталогов.

-1
26.10.2014, 23:17
3 ответа

, Если вы хотите переписать данные зашифрованного диска с незашифрованными данными так или иначе (т.е. вы не заботитесь о текущем содержании), вы не должны открывать двигатель/разделение сначала.

Если раздел имеет особый необычный тип раздела, вы можете изменить его, но это не обязательно. Вы можете просто использовать mkfs.ext4 (или любой предпочитаемый тип файловой системы) в разделе, который содержит раздел шифрования LUKS.

-121--105573-

Измените следующее:

find ./ -newerct '1 week ago' -print | grep TODO

на следующее:

find ./ -newerct '1 week ago' -exec grep TODO {} +

или следующее:

find ./ -newerct '1 week ago' -print | xargs grep TODO

Объяснение

Ваш grep интерпретирует вывод find не как список файлов для поиска, а как его ввод. То есть grep пытается сопоставить TODO в именах файлов, а не в их содержимом .

На главной странице grep (1) :

grep выполняет поиск по именованным входным файлам FILEs (или стандартным входным данным, если файлы отсутствуют имя, или если в качестве имени файла указан один дефис-минус (-))

Для соответствия строке после TODO :

find ./ -newerct '1 week ago' -exec grep -A1 TODO {} + | grep -v TODO

Это предполагает наличие GNU grep .

5
28.01.2020, 05:06

Вы можете использовать это:

find ./ -type f -newerct '1 week ago' -exec sh -c "grep -H -A1 TODO {} | tail -1" \;

Объяснение:

  • -Type F : включает в себя только файлы в шаблоне поиска
  • -EXEC SH -C "..." : Выполняет ... для всех найденных файлов
  • grep -h -a1 todo {} | хвост -1 : --h печатает имя файла, -A1 печатает линию после матча, а хвост -1 удаляет первую строку ( линия с TODO) из вывода.
0
28.01.2020, 05:06

Попробуйте это

find . -type f -ctime -7 -print | grep -R "TODO" /etc/

-Type f -Type f, чтобы пересмотреть только файлы

-CTIME -7 для файлов с созданным временем менее 7 дней

0
28.01.2020, 05:06

Теги

Похожие вопросы