С mv
или rm
я бы использовал флаг -f
, но я уверен, как справиться с этим для cat
.
Есть ли способ сделать это? Альтернатива, которая может справиться с этим крайним случаем? или одна строка try/except, которая может справиться с этим крайним случаем?
например.,
cat path/to/potential_files/*.fa > output.fa
cat: 'path/to/potential_files/*.fa': No such file or directory
Вы можете использовать подстановку для перебора всех файлов, соответствующих .fa, и добавить их к выходному файлу, используя >>:
for file in "$YOUR_PATH/*.fa"; do
cat "$file" >> outout_file.txt
done
Я все еще получаю ту же ошибку ... хммм. Вот пример (сначала показано, что *.fa нет) (base) -bash-4.2$ ls *.fa ls: cannot access '*.fa': No such file or directory (base) -bash-4.2$ for FP in "*.fa"; do cat $FP >> test.txt; done cat: '*.fa': No such file or directory
Эта ошибка может указывать на то, что у вас нет разрешения на запись по этому пути, только на чтение.
Вы можете написать try ... catch ...
с
cat file 2>/dev/null ||
{
echo 'Catch block, only reached when $? -ne 0'
echo 'Another catch statement'
}
# Or oneliner (note the spaces around the curly braces and the semicolons)
cat file 2>/dev/null || { echo 'Something '; echo 'else'; }
В итоге я немного адаптировал ваш ответ. Спасибо. cat filepath 2>/dev/null || > filepath
Перенаправить stderr в /dev/null?