С GNUawk
:
gawk '
BEGINFILE{search = "@code prefix." substr(FILENAME, 3, length(FILENAME) - 6)}
index($0, search)'./*.py.txt
Сообщит о совпадающих строках.
Чтобы напечатать имя файла и соответствующую строку, измените index($0, search)
на
index($0, search) {print FILENAME": "$0}
Или для печати только имени файла:
index($0, search) {print FILENAME; nextfile}
Замените FILENAME
на substr(FILENAME, 3)
, чтобы пропустить вывод префикса ./
.
Список файлов лексически отсортирован. Те, чье имя начинается с .
, игнорируются, (некоторые оболочки имеют опцию dotglob
, чтобы добавить их обратно; с zsh
вы также можете использовать квалификатор (D)
glob ).
MacOs — это не то же семейство UNIX, что и Linux, поэтому параметры для команд могут отличаться.
РЕШЕНИЕ 1:man date
ваш друг.
В MacOS необходимо использовать комбинацию -j
и -f
.
E444:~ emas$ date -j -f %Y%m%d-%H%M%S 20180101-234852 +%Y/%m/%d\ %H:%M:%S
2018/01/01 23:48:52
E44:~ emas$ date -j -f %Y%m%d-%H%M%S 20180101-234852 +%s
1514868532
E444:~ emas$ date -j -f %s 1514868532
Mon Jan 1 23:48:52 EST 2018
РЕШЕНИЕ 2:используйте brew(https://brew.sh/)для установки некоторых инструментов GNU/Linux.
brew install coreutils
установит многие базовые инструменты с префиксом g
, поэтому date
станет gdate
и будет находиться в вашей папке /usr/local/
.