Как отсортировать вывод grep по времени + дате создания файла?

Попробуйте

$ ls -l
$ whoami
$ groups

Затем проверьте, принадлежат ли файлы вам или вашей группе.

Наслаждайтесь.

1
14.12.2016, 01:34
2 ответа

Сначала выполните ls с сортировкой по времени, а затем перенаправьте stdout в grep через xargs, используя флаг -H для включения имени файла (поскольку он будет делать это только для одного файла, по умолчанию имя файла не включается)

В первом grep после ls каталоги исключаются (подумайте, что это не рекурсивный поиск из приведенного вами примера). Второй grep после ls, фильтрует имя файла (без xargs)

ls -tpQ --quoting-style=shell | grep -v / | grep model | xargs -i grep -H _rlnAveragePmax {}

Обновление после ценных комментариев Wildcard: Чтобы учесть все случаи, в которых имена файлов могут содержать странные символы, номера inode извлекаются из ls , и передан в "find" для сопоставления номеров inode и выполнения команды grep. xargs заменяется на "во время чтения", поскольку будет два символа {}, которые команда xargs не сможет различить

Следуют символические ссылки, включаются только файлы, за исключением каталогов и т. д. Аргумент maxdepth в этом контексте является избыточным. (остались только файлы), однако я включил его, чтобы также был возможен рекурсивный поиск, изменив аргументы:

ls -ti | cut -d " " -f1 | while read line; do find -L . -maxdepth 1 -type f -inum $line -exec grep -H xxx {} \; ; done
0
27.01.2020, 23:46

Если вы не используете macOS, дата создания файла не сохраняется. В любом случае эта концепция плохо определена, поскольку при редактировании файла часто создается новый файл, который заменяет предыдущую версию. Записывается дата последнего изменения файла (включая как первоначальное создание, так и любое последующее редактирование).

Самый простой способ отсортировать файлы по времени изменения - запустить zsh (в отличие от других, менее мощных командных интерпретаторов, таких как bash, ksh или fish). В zsh вы можете использовать квалификаторы glob , такие как Om , для сортировки файлов по времени модификации (сначала самые старые, сделайте это Om , чтобы сначала получить младшие).

grep _rlnAveragePmax *model*(Om)

Это дает желаемый результат, поскольку grep просматривает файлы в порядке, указанном в командной строке.

1
27.01.2020, 23:46

Теги

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