Я нашел решение! во-первых:
$ sudo nano /etc/environment
Во-вторых (добавьте эту строку в конфигурацию):
_JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=setting'
Но я чего-то не понял. Согласно эта статья параметр не является значением. Также вышеописанный ранее параметр вообще не указан, и эта проблема присутствовала.
В bash (не простой sh) вы можете использовать шаблон**/
подстановочных знаковдля рекурсивного обхода каталогов. Сначала вам нужно установить параметр globstar
. Например, для запуска mycommand
для каждого файла .fastq
в папке /project/samples
:
#!/bin/bash
shopt -s globstar
for x in /project/samples/**/*.fastq; do
mycommand "$x"
done
Это доступно только начиная с bash 4.0 (поэтому не на bash по умолчанию в OSX, но эта функция также доступна в zsh). Помните, что в версиях bash до 4.3 он также проходит по символическим ссылкам на каталоги.
Если вам нужно запустить одну команду для всех файлов, вы можете:
mycommand /project/samples/**/*.fastq
Однако вы можете столкнуться с ограничением длины командной строки. Это помогает использовать относительный путь:
cd /project/samples
mycommand **/*.fastq
Если это все еще не подходит, вам нужно найти другое решение, чтобы делать все, что вам нужно, которое не включает передачу всех имен файлов в качестве аргументов этой команде. сразу.
#!/bin/bash
if [ ! -d "$1" ]; then
printf 'Not a directory: %s\n' "$1" >&2
exit 1
fi
find "$1" -type f -name "*.fastq" -print
Это небольшой скрипт, который просто перечисляет файлы fastq в заданном каталоге.
Если вы хотите выполнить команду для каждого файла, самым простым способом было бы изменить find
на
find "$1" -type f -name "*.fastq" -exec utility {} ';'
Где utility
— это некоторая программа, которая использует путь fastq в командной строке ({}
будет заменено на путь к файлу fastq).
С помощьюнайдитекоманду:
find /project/samples/ -name "*.fastq"