1

У меня есть тонна файлов с метками времени. Это все выглядит как

2011-06-24_13.53.36  // a directory name for june 24th, 1:53:36 pm

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

2011-06-25_00.00.00 // june 25th, 12am

Я хочу найти все каталоги ДО моего времени. Так что, если я дам строку для 12 утра 25 июня, я хочу найти все каталоги до этого.

Можно ли это сделать с помощью команды find?

Если нет, то я могу найти КАЖДЫЙ каталог, который у меня есть, и затем отфильтровать после него. Даты создания / изменения не привязаны к фактической временной метке, которую я ищу (это облегчит эту задачу)

2 ответа2

1

Этот формат можно сортировать по строкам, так что вы можете просто сравнить строки в строках того же формата.

Я не знаю, может ли / как find это сделать, но вот возможный пример Perl (если все папки находятся в одном месте и имеют одинаковый формат):

perl -E "-d && $_ lt '2011-06-25_00.00.00' && say while <*>"

Выход:

2011-05-28_00.00.00

(Что верно для моего маленького теста.)

1

Один изворотливый способ:

  • Если у вас есть только эти каталоги в рабочем каталоге
  • Вы находитесь в Bash или подобном

Следующая команда должна дать вам список файлов "в алфавитном порядке старше", чем 25 июня.

ls -l | head -`ls -l | grep -n 2011-06-24 | cut -d: -f1`

Теперь обратите внимание, что критерием шаблона имени является 2011_06_24 (чтобы избежать 2011_06_25 в результате)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .