2016-01-18 1 views
0

Ниже приводится основной вывод ls -ltrh (в Solaris):Как выбрать «равный/новее, чем» файлы на основе времени, затраченного в Solaris/Shell

-rw--r--r-- 57 oracle dba 1.9K Jan 18 14:38 file001.log 
-rw--r--r-- 30 oracle dba 1.0K Jan 18 14:41 file002.log 
-rw--r--r-- 8 oracle dba 272B Jan 18 15:33 file003.log 
-rw--r--r-- 8 oracle dba 272B Jan 18 15:35 file004.log 

Выход приложения для времени всегда в следующий формат (не может быть изменен), на основании которого мне нужно выбрать файлы> = дата:

01/18/2016 14:41 

в приведенном выше случае, мне нужны все файлы с 18 января, с временной меткой 14:41 и новее ,

+0

Обратите внимание на [edit-help] (http://stackoverflow.com/editing-help). – Cyrus

+0

[Также попробуйте решить эту проблему] (http://stackoverflow.com/help/mcve). Ваш вопрос должен включать ваш собственный код, ваши ожидаемые результаты, а также ваши фактические результаты или любые ошибки, возникшие при попытке запустить ваш код. – ghoti

+0

Разбор 'ls' [не рассматривается] (http://mywiki.wooledge.org/ParsingLs) - хорошая идея. – dawg

ответ

1

Здесь я бы использовал другой подход - вместо использования ls и анализа вывода вы можете использовать команду unix find.

, например, это даст вам файлы, измененные на прошлой неделе:

find . -mtime -7 

вы также можете использовать -newer флаг, чтобы получить все файлы, которые новее, чем какой-то конкретный файл (а затем использовать трюк, показанный на втором ответ here для получения более подробной информации)

+0

Спасибо Nir. Тем не менее, моя задача заключается в преобразовании поиска на основе приведенного выше вывода даты/времени. Кроме того, это Solaris. – orionb

2

После резки/sed/безотносительно, преобразуйте дату 01/18/2016 14:41 в 201601181441.00. Теперь создайте файл tmp с этой меткой времени и найдите более новые файлы:

touch -t 201601181441.00 /tmp/olddate 
find . -newer /tmp/olddate -print 
rm -f /tmp/olddate 

 Смежные вопросы

  • Нет связанных вопросов^_^