У меня есть папка с большим количеством файлов, названных с непрерывным номером и некоторым текстом, но некоторые цифры отсутствуют. Я хочу записать все недостающие числа в файл.Bash write ls error to file
Вот что я получил до сих пор:
#!/bin/bash
for ((c=23457; c<=24913; c++))
do
files=$(printf %q kassensystem/documents/"${c}")
ret=$(ls $files*)
echo "$ret" >> ./out.log
done
Выход выглядит так:
все существующие файлы записываются в файл, все ошибки в консоли. Я хочу именно так. Все ошибки (ls: ..file not found
) записаны в файл!
Я попытался использовать полную команду ls $files* | grep -v 'kasse*'
, но тогда я получаю только файл с пустыми строками.
Благодарим за помощь!
Сообщения об ошибках идут в 'stderr', вы только захватываете' stdout'. – Barmar
'ls' никогда не должен использоваться для такого рода случаев. См. Http://mywiki.wooledge.org/ParsingLs - сама оболочка может расширять глобы для заполнения списков имен, поэтому вызов внешнего инструмента, созданного главным образом для генерации вывода для людей, бесполезен. –
BTW, ставит 'out.txt' в цикле очень неэффективно - он * открывает файл * каждый раз, когда эта строка выполняется. –