Сравнить время модификации файла с заданными временными метками?

У меня есть каталог hdfs с большим количеством файлов и каталогов в следующем формате.

-rw-rw-rw-   3 root xyz  <filesize> 2015-04-12 00:34 file1
-rw-rw-rw-   3 root xyz  <filesize> 2015-04-11 11:34 file2
-rw-rw-rw-   3 root xyz  <filesize> 2015-04-09 09:54 file3
drwxrwxrwx   3 root xyz    0        2015-04-02 00:34 dir

У меня есть один скрипт awk, который фильтрует файлы из списка, используя

awk '{ if($1 !~ /d.*/ ) {print $0}}'.

Я использую это в функции C ++, которая имеет две отметки времени в date(yyyy-mm-dd) а также time (hh:mm:ss) формат.
Я хотел бы поместить условие ‘if’ в ‘awk’, которое может фильтровать файлы, находящиеся между двумя временными метками.

Я пытался делать

($6 >= startDate) && ($6 <= endDate) && ($7 >= startTime) && ($7 <= endTime),

но это не работает, как ожидалось. Я новичок в awk.

0

Решение

Ты можешь использовать find чтобы упростить это.

find . -newermt "$dt1" ! -newermt "$dt2"

Вот сценарий оболочки, который я использовал для тестирования. Если вы можете передать аргументы из вашего кода C ++, вы можете сократить это до одной строки с помощью только команды find.

# Date 1
startDate=2015-04-11
startTime=21:10:00
dt1="$startDate $startTime"
# Date 2
endDate=2015-04-11
endTime=22:10:00
dt2="$endDate $endTime"find . -newermt "$dt1" ! -newermt "$dt2"

Примечание: я предполагаю, что начальная дата и время начала идут вместе, а конечная дата и время окончания идут вместе. Но у вас есть свобода выбора.

0

Другие решения


По вопросам рекламы [email protected]