Изучите Linux

Как рекурсивно находить и перечислять файлы по дате в Linux

Как рекурсивно находить и перечислять файлы по дате в Linux

Основная причина, по которой большинство пользователей операционных систем предпочитают Linux другим операционным системам, - это свобода исследования. В Linux вы привязаны к некоторым слабо связанным правилам операционной системы. ОС предопределяет некоторые изменяемые стандартные правила для использования в своей среде.

Как только вы сбросите пальто новичка, вы можете выйти из этих правил по умолчанию и создать свой собственный. В Linux операционная система - это ваш верный слуга, а вы - хозяин.

Этот случай неприменим в других дистрибутивах операционной системы, поскольку существует слишком много абстракций. Операционные системы здесь больше ваш помощник. У вас никогда не может быть больше мощности, чем операционная система, как в случае с Linux. По мере того, как вы продолжаете создавать свой пользовательский интерфейс в среде ОС Linux, ваше любопытство к ОС будет расти с каждым днем. Вы всегда будете хотеть знать, что здесь скрыто и что еще вы можете сделать под его зонтиком.

Работа с файлами и каталогами в Linux

Идеальный сценарий - ваше ежедневное взаимодействие с файлами и папками в среде операционной системы Linux. Использование файловой системы ОС Linux - это больше, чем просто создание, редактирование, изменение и удаление пользовательских файловых систем и папок. Каждое действие, связанное с пользовательскими файлами и папками / каталогами в среде Linux, оставляет след пользователя или отпечаток пальца. Это как войти в комнату, чтобы прикоснуться к предметам и обменяться ими.

Если арендодатель или смотритель Linux управляет этой комнатой, в которую вы вошли, он будет точно знать, что вы сделали и какие предметы вы трогали или меняли местами. В Linux есть полезные команды, которые помогут нам добиться таких результатов. Вы узнаете, что случилось с файлами и папками в вашей ОС Linux, и определите эти действия в зависимости от того, когда они произошли.

Короче говоря, при работе с файлами и каталогами в среде операционной системы Linux мы можем построить временную шкалу событий для выявления уязвимых модификаций файлов с помощью временных меток, прикрепленных к каждой модификации. В качестве преимущества вы узнаете, была ли модификация связана с вредоносным контентом, через сгенерированные системные журналы.

Команды Linux для использования

Мы направим несколько простых команд, чтобы понять объективный смысл этой статьи. Сначала вам нужно запустить свой терминал и перейти по системному пути, который, как вы знаете, содержит много каталогов файлов и папок. Чтобы быть в безопасности и не экспериментировать с вашими уязвимыми системными файлами, вы можете использовать каталог «Documents», который обычно предопределен в операционной системе Linux. Следующая команда должна привести вас в этот каталог «Документы».

$ cd ~ / Документы

Это популярный каталог с множеством файлов и подкаталогов. Другой каталог, который можно использовать для этого эксперимента со статьей, - это каталог «Загрузки». Это то место, где вы никогда не пропустите загруженные файлы и другие подкаталоги.

$ cd ~ / Загрузки

Чтобы начать этот эксперимент, нам нужен соответствующий пример вывода с нашего терминала. Мы введем командную строку на нашем терминале, которая позволит нам перечислить активные файлы и связанные с ними подкаталоги. Кроме того, каждый элемент результирующего вывода этой команды будет связан с меткой времени, которая указывает на последнюю попытку модификации связанного файла, каталога или подкаталога.

Используемая командная строка выглядит следующим образом:

$ найти . -printf '% T @% t% p \ n' | sort -k 1 -n | вырезать -d "-f2-

Снимок экрана ниже - результат использования указанной выше командной строки.

пример вывода использования команды поиска, сортировки и вырезания

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

Как вы заметили, указанная выше командная строка, которую вы вставили на свой терминал, имеет три важных командных аргумента. Нам нужно понять, что делает каждый из них.

Находить

Команда «найти» выполняется первой из командной строки. Его единственная цель - рекурсивно перечислить активные файлы и каталоги в вашем родительском рабочем каталоге. Значок «.»Аргумент, следующий за аргументом« найти », указывает эту команду на текущий рабочий каталог. Если вы не уверены в каталоге, в котором находитесь; вы можете ввести команду «pwd» на своем терминале. Он распечатает путь к каталогу, в котором вы сейчас находитесь.

Значок «.»Аргумент транслируется как вывод команды« pwd ». Это упрощает поиск файлов и каталогов в вашем текущем рабочем каталоге. Следующий аргумент в командной строке - «-printf». Это флаг для аргумента печати. Он печатает файлы и каталоги в вашем текущем рабочем каталоге в указанном формате. Принимаемый формат определяется аргументом «% T @% t% p \ n». Это командный аргумент, который следует сразу за ним.

Часть этого аргумента "% T @" представляет время эпохи. По определению, эпоха или эпоха Unix - это отметка времени 1 января 1970 года. Это представлено как 00:00:00 UTC. Вывод на вашем терминале принимает этот формат для представления дат изменения, связанных с перечисленными файлами и каталогами. Часть аргумента "% t" теперь принимает формат времени эпохи для отображения последней отметки времени модификации, связанной с перечисленными файлами и каталогами.

В зависимости от вашего дистрибутива или версии Linux на выходе терминала может не отображаться время эпохи, связанное с выходным списком измененных файлов. Это утверждение является доказательством вывода с моей стороны.

Часть аргумента "% p" выводит имена отображаемых файлов в текущем рабочем каталоге. Наконец, часть аргумента '/ n' служит для символа новой строки. После каждого последующего перечисления измененного файла этот символ новой строки берет курсор дисплея и пропускает отображение следующего файла на новую строку на экране терминала. Это позволяет нам ассоциировать каждый отображаемый файл по-разному.

Другой подход к работе с ранее указанной командной строкой - замена части «% t» в аргументе «% T @% t% p \ n» на «% c». Результирующая командная строка должна выглядеть примерно так:

$ найти . -printf '% T @% c% p \ n' | sort -k 1 -n | вырезать -d "-f2-

Результат выполнения этой командной строки должен привести к выводу, подобному следующему снимку экрана.

изменение аргументов в команде поиска файла рекурсивно

Наблюдение за приведенным выше снимком экрана ясно показывает следующее наблюдение. Список вывода файлов в текущем рабочем каталоге отображается с «временем последнего изменения статуса» вместо «времени модификации». Это результат замены "% c" на "% t" в "% T @% t% p \ n". Эта последняя команда распечатывает изменения разрешений, связанные с выведенным списком файлов. Содержимое файлов может не измениться, но связанные с ними метаданные изменятся.

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

Сортировать

Этот аргумент команды имеет три параметра, а именно '-k', '1' и 'n'. Команда sort отвечает за порядок, в котором вывод списка файлов отображается на наших экранах. В этом случае сначала печатается дата модификации, а затем путь к измененному файлу или каталогу. Часть '-k' этого аргумента команды указывает начальную позицию для начала процесса сортировки.

Часть '-k' аргумента команды сортировки содержит вопрос, на который отвечает часть '1' того же аргумента. В этом случае процесс сортировки начинается с первого столбца, обозначенного цифрой «1». Аргумент команды сортировки также отвечает за то, чтобы самый новый измененный файл находился внизу списка, а самый старый - вверху. Часть аргумента '-n' отвечает за числовое значение времени с точностью до десятичной точки.

Если вы используете '-nr' вместо '-n', выходные данные командной строки будут иметь недавно измененные файлы и каталоги поверх вывода терминала и старые модификации файлов внизу. Он меняет порядок сортировки вывода терминала.

Резать

Основная цель аргумента команды «вырезать» - упорядочить вывод распечатки нашего терминала. Параметры '-d' и "этого аргумента команды объединяются, чтобы генерировать пробелы, а затем обрезать распечатку сведений о содержимом файла, которые могут попытаться заменить эти пробелы.

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

Альтернативные варианты команд

Вы можете возразить, что команда «ls -lrt» идеально перечисляет все файлы в пределах пути к активному каталогу в вашей операционной системе Linux, от самых старых до самых новых. С другой стороны, эта команда не учитывает содержимое файла, существующее в подпапках. Если перечисление подкаталогов не является вашей целью, вы можете добавить аргумент «-type f» в командную строку. Рассмотрим следующую модификацию команды.

$ найти . -введите f -printf '% T @% t% p \ n' | sort -k 1 -n | вырезать -d "-f2-

Использование аргумента команды «-type d» будет иметь противоположный эффект по сравнению с приведенной выше командой. Ваш терминал будет выводить только измененные каталоги от самого старого до самого нового. Рассмотрим его значение следующим образом:

$ найти . -введите d -printf '% T @% t% p \ n' | sort -k 1 -n | вырезать -d "-f2-

Заключительное примечание

Теперь вы знакомы с пошаговым руководством по рекурсивной печати файлов и каталогов в вашем текущем рабочем каталоге с дополнительными знаниями о том, когда они были в последний раз изменены на основе связанных с ними временных меток.

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

Бесплатные движки с открытым исходным кодом для разработки игр для Linux
В этой статье будет рассмотрен список бесплатных игровых движков с открытым исходным кодом, которые можно использовать для разработки 2D- и 3D-игр в L...
Shadow of the Tomb Raider для Linux Учебное пособие
Shadow of the Tomb Raider - двенадцатое дополнение к серии Tomb Raider - франшизе приключенческой игры, созданной Eidos Montreal. Игра была очень хоро...
Как увеличить FPS в Linux?
FPS означает Кадров в секунду. Задача FPS - измерить частоту кадров при воспроизведении видео или во время игры. Проще говоря, количество непрерывных ...