Поиск определенного файла в Linux и печать времени его создания и изменения - PullRequest
0 голосов
/ 07 ноября 2019

Я хочу найти некоторые файлы в каталоге Linux на основе определенного текста, который у них есть. После того, как я выяснил файл (ы), я хочу напечатать время создания и модификации.

Например, у меня есть каталог X с четырьмя файлами, а именно: x1.txt, x2.txt, x3.text и x4.txt со следующей информацией.

x1.txt

Name: Mark
Age: 22
Country: USA

x2.txt

Name: Jiff
Age: 26
Country: USA

x3.txt

Name: Sarah
Age: 30
Country: Canada

x4.txt

Name: Heather
Age: 23
Country: USA

Я хочу напечатать время создания и изменения файла (ов), которые содержат текст (ы) "Страна: Канада"

Я только что выяснил файлы в этом формате

# echo $(grep -rn 'Country: Canada' *)

И я получил

x3.txt:3:Country: Canada

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

1 Ответ

2 голосов
/ 07 ноября 2019

Используйте параметр -l для grep, чтобы выводить только имена файлов:

grep -lrn 'Country: Canada' *

Чтобы напечатать время создания / изменения файла, используйте stat:

stat <file>

Вы можете отформатировать вывод, как вам нравится:

stat --printf "Created: %w\nModified: %y\n"

Собрав все это вместе, вы можете отправить список вывода grep в список ввода stat с помощью команды xargs:

grep -lrn 'Country: Canada' * | xargs stat --printf "Created: %w\nModified: %y\n"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...