Дескриптор файла → Открытый файл Описание → запись каталога 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
, который отслеживает откуда, где файл находится в дереве каталогов.
, Если вы хотите переписать данные зашифрованного диска с незашифрованными данными так или иначе (т.е. вы не заботитесь о текущем содержании), вы не должны открывать двигатель/разделение сначала.
Если раздел имеет особый необычный тип раздела, вы можете изменить его, но это не обязательно. Вы можете просто использовать mkfs.ext4
(или любой предпочитаемый тип файловой системы) в разделе, который содержит раздел шифрования LUKS.
Измените следующее:
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
.
Вы можете использовать это:
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) из вывода. Попробуйте это
find . -type f -ctime -7 -print | grep -R "TODO" /etc/
-Type f
-Type f, чтобы пересмотреть только файлы
-CTIME -7
для файлов с созданным временем менее 7 дней