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

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

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

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

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

3 Solutions collect form web for “Как добавить несколько запросов в команду AWK”

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

 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" 
  • У меня возникли проблемы с просмотром, если мои имена хостов из моего файла являются либо записью A, либо псевдонимом
  • Разделить CSV-файл на более мелкие файлы на основе некоторого условия
  • Как распечатать каждую другую строку на мониторе
  • Копирование XML-контента между двумя тегами из одного файла в другой
  • Как убить процесс в скрипте оболочки, который работает через cron?
  • Awk - выводит вторую строку из нескольких файлов .dat в один файл
  • Как мне спросить пароль по приглашению GUI при использовании sudo в скрипте?
  • Bash итерация по парам файлов
  • rsync - копировать содержимое каталога только в том случае, если определенный файл не существует
  • Запустите сценарий оболочки через символическую ссылку из каталога, содержащего сам сценарий
  • Пример использования / практический пример для встроенного exec Bash
  • Linux и Unix - лучшая ОС в мире.