С помощью zsh
вы можете использовать рекурсивную подстановку и ее <x-y>
оператор подстановки, который соответствует диапазонам десятичных чисел:
grep -nHFe 'text I seek' /path/**/file.<2019-2020>*(D-.)
(чтобы (D)
также заглянуть в скрытые(D
и )каталоги, как это сделал бы find
;по-видимому, вы можете опустить его, если они вам не нужны, а -.
означает ограничение обычным файлом (.
), идентифицированным после разрешения символической ссылки(-
)).
Обратите внимание, что он также будет соответствовать file.00002020
(, так как это десятичное число между 2019 и 2020 ), и, как и в вашем подходе к file.20201234
, так как его file.2020
, который соответствует file.<2019-2020>
, за которым следует 1234
, который соответствует *
.
Стандартный (POSIX sh
и утилиты )способ сделать это с помощью:
find /path \( -name 'file.2019*' -o -name 'file.2020*' \) -type f \
-exec grep -Fne 'text I seek' /dev/null {} +
(где добавление /dev/null
дает вам тот же эффект, что и GNU grep
-H
для принудительного отображения имени файла)
Обратите внимание, что выходные данные find -print
несовместимы с ожидаемым входным форматом xargs
. С утилитами GNU вы можете использовать find -print0
и xargs -r0
, но это не обязательно, так как find -exec... {} +
ведет себя так же, короче и более переносим.
Я не знаю, связано ли это с mplayer, но я делаю что-то подобное с mpg123.
Это мой пользовательский crontab (не /etc/crontab, просто обычный пользователь):
0 6-22 * * * /usr/bin/mpg123 /home/me/sounds/magpies.mp3 > /dev/null 2>&1
Убедитесь, что пользователь также является членом групп audio
и video