Intereting Posts
Debian: почему моя версия debian_version «buster / sid» после обновления с натяжения на тестирование Как я могу удалить все до шаблона и всего после другого шаблона из строки? Давайте зашифруем ошибку обновления Gnome 3 не позволяет мне войти в систему как root Возможно ли создать «отрицательный» ACL? Есть ли резервный инструмент, который распознал переименованные / перемещенные файлы / каталоги? CentOS VM загружается в пустой экран Как отключить пользовательские tmpfs / run / user / 1000, tmpfs Предвидела ли документация pivot_root () особенность пространств имен монтирования? Red Hat Enterprise Linux 6.9 – Не удается найти или установить RPM-привязки Python? Является ли чтение видео с YouTube только для звука, доступного в командной строке? передать 1 переменную среды, используя sudo Нужен awk / sed для замены значений внутри $ {} Я хочу сравнить два списка и распечатать вывод разности из списка 1 Существует ли совпадение в использовании PID и jobspec в Bash?

Как добавить несколько запросов в команду AWK

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

ls -lrth|awk '/[Jun][Jul][Aug]/ {print}' 

но он не работает.

Пожалуйста, помогите мне исправить синтаксис.

Вы можете сопоставлять несколько шаблонов:

 awk '/Jun/ || /July/ || /Aug/' <(ls -lrh) 

Это возвращает все совпадения для июня, июля или августа. Вы не требуете оператора print поскольку это действие по умолчанию awk .

Как правило, это очень плохая идея для анализа вывода ls . Лучший способ сделать то, что вы хотите, – это

 stat -c "%n %y" * | grep 2013-0[678] 

Кроме того, проверьте только последнее поле для защиты от маловероятного случая, когда само имя файла является датой:

 stat -c "%n %y" *| awk '$NF ~ /2013-0[678]/' 

От man stat :

  -c --format=FORMAT use the specified FORMAT instead of the default; output a new‐ line after each use of FORMAT %y time of last modification, human-readable %n file name 

ls – команда для отображения информации о файлах в читаемом человеке. Не используйте его в скриптах .

Найдется команда для поиска файлов в дереве каталогов, соответствующих определенным критериям. Если у вас есть поиск GNU (например, не встроенный Linux или Cygwin) или поиск FreeBSD (например, FreeBSD или OSX), вы можете использовать -newermt для соответствия файлам, которые были последними изменены после определенной даты.

 find . -newermt '1 June' ! -newermt '1 September' -print 

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

Если в вашей реализации поиска нет -newermt , вам нужно будет -newer , который сравнивает дату файла, найденного с фиксированным файлом. используйте touch для создания временных файлов с датой, которую вы хотите использовать в качестве границы.

 dir=$(mktemp -d) touch -d 201306010000 "$dir/from" touch -d 201309010000 "$dir/to" find . -newer "$dir/from" ! -newer "$dir/to" -print rm -r "$dir"