Шрифт Consolas был разработан с намеками, которые плохо смотрятся в некоторых механизмах рендеринга.
Единственный способ обойти это — как-то изменить другой шрифт:
Если вашим приложениям специально требуется шрифт Consolas, единственный вариант — переименовать любой шрифт в Consolas, а затем использовать его.
Там, где написано в вашем сценарии:
if grep -qF _AAC $file; then
он говорит: "Если содержимое файла с именем $file
содержит литеральную строку _AAC
, то...." выполнить содержимое блока then
.
Если вместо этого вы имеете в виду поиск _AAC
в строке, полученной в результате расширения переменной $file
(, т.е. чтобы проверить, присутствует ли _AAC в самом имени файла ), то в bash
, нужно написать:
if grep -qF _AAC <<< "$file"; then
Или, как указывает @roaima, литеральная строка, которую вы ищете, может быть включена в спецификацию файла с подстановочными знаками.
Если вы хотите сопоставить все файлы с именами, подобными .../something_AACxyz
, с _AAC
в последней части имени файла, просто добавьте часть _AAC
непосредственно к шаблону глобуса/шаблону:
for file in./**/*_AAC*.{txt,reamde,nfo}; do
Если вам нужны имена файлов, где _AAC
может появляться в любой части, вы можете сделать (в Bash):
for file in./**/*.{txt,reamde,nfo}; do
if [[ $file == *_AAC* ]]; then
echo "'$file' contains _AAC"
else
echo "'$file' has NO _AAC"
fi
done
Здесь вы также получаете файлы, которые соответствуют шаблонам, но не имеют _AAC
.
В любом случае, в Bash вы также можете включить extglob
и переписать шаблон с помощью @(...|...)
вместо раскрытия фигурной скобки:
for file in./**/*_AAC*.@(txt|reamde|nfo); do
Раскрытие фигурных скобок создает несколько отдельных глобусов, в то время как с @(..)
это всего лишь один глобус. (т. е. *.{foo,bar}
совпадает с*.foo *.bar
)При установке nullglob
несоответствующие -значения не имеют значения, но если у вас установлено failglob
, будет только одна несоответствующая -единица. достаточно, чтобы провалить всю команду.