Перенаправление необходимо заключать в кавычки, чтобы его не интерпретировала текущая оболочка.
Но его цитирование также позволит избежать перенаправления вывода команды.
Известным решением этого является вызов оболочки:
find. -name '*.jpg' -exec sh -c 'echo "$1" >"$1".new' called_shell '{}' \;
В этом случае перенаправление(>
)указано в кавычках в текущей оболочке и корректно работает внутри вызываемой оболочки. called_shell
используется как $0
параметр (имя )дочерней оболочки(sh
).
Это хорошо работает, если к имени файла добавляется суффикс, но не при использовании префикса. Чтобы префикс работал, вам нужно как удалить ./
, который находит перед именами файлов с ${1#./}
, так и использовать опцию -execdir
.
Вы можете (или не )использовать параметр -iname
, чтобы файлы с именами *.JPG
или *.JpG
или другими вариантами также были включены.
find. \( -iname '*.jpg' -o -iname '*.jpeg' \) -execdir sh -c '
cjpeg -quality 80 "$1" > optimized_"${1#./}"
' called_shell '{}' \;
И вы можете (или не можете )вызывать оболочку один раз для каталога, а не один раз для файла, добавив цикл(for f do … ; done
)и +
в конце:
find. \( -iname '*.jpg' -o -iname '*.jpeg' \) -execdir sh -c '
for f; do cjpeg -quality 80 "$f" > optimized_"${f#./}"; done
' called_shell '{}' \+
И, наконец, поскольку cjpeg
может напрямую записывать в файл, перенаправления можно было бы избежать, поскольку:
find. \( -iname '*.jpg' -o -iname '*.jpeg' \) -execdir sh -c '
for f; do cjpeg -quality 80 "$f" -outfile optimized_"${f#./}"; done
' called_shell '{}' \+
Поиск шрифтов (с использованием recutils
для фильтрации результатов, будет отображаться только название):
guix package -s font |recsel -p name
Вы можете добавить краткое описание результатов:
guix package -s font |recsel -p name,synopsis
Затем установите нужные шрифты. например,:
guix package -i font-dejavu
обновить кеш fontconfig:
guix package -i fontconfig
fc-cache -rv
Дляttf/otf
:guix package -s ttf
илиguix package -s font |grep ttf
:
guix package -i font-gnu-freefont
Чтобы установить локальный файл шрифта, перетащите шрифт или папку со шрифтом в(/home/.local/share/fonts
). Если папки fonts
не существует, создайте ее!