% - форматирование берет словарь (также применяет %i / % s и т.д. проверка).
>>> print "The %(foo)s is %(bar)i." % {'foo': 'answer', 'bar':42}
The answer is 42.
>>> foo, bar = 'question', 123
>>> print "The %(foo)s is %(bar)i." % locals()
The question is 123.
И так как местные жители () являются также словарем, можно просто передать это как dict и иметь %-substitions от локальных переменных. Я думаю, что это осуждено, но упрощает вещи..
Новый стиль, Форматирующий
>>> print("The {foo} is {bar}".format(foo='answer', bar=42))
Комментарий Адама показал мне способ решения этой проблемы, но это был единственный синтаксис, который я заставил работать:
find /mydisk/myfolder -name \*.xxx -type f | \
(while read file; do
iconv -f ISO-8859-1 -t UTF-8 "$file" > "${file%.xxx}-utf8.xxx";
done);
-i ... -o ... не работает, но снова>
thx
ekke
, если ваша оболочка - bash, что-то вроде этого
for files in /mydisk/myfolder/*.xxx
do
iconv -f ISO-8859-1 -t UTF-8 "$files" "${files%.xxx}-utf8.xxx"
done
Вы можете написать сценарий на любом языке сценариев, чтобы перебирать каждый файл в / mydisk / myfolder, проверять расширение с помощью регулярного выражения [. (. *) $], И если это "ext "запустите следующий (или аналогичный) из системного вызова.
" iconv -f ISO-8859-1 -t UTF-8 "+ file.getName () +"> "+ file.getName () +" -utf8.xxx "
Это было бы всего несколько строк в Python, но я оставляю это в качестве упражнения читателю, чтобы он подробно рассмотрел особенности поиска итерации каталога и регулярных выражений.
Если вы хотите сделать это рекурсивно, вы можете использовать find (1)
:
find /mydisk/myfolder -name \*.xxx -type f | \
(while read file; do
iconv -f ISO-8859-1 -t UTF-8 -i "$file" -o "${file%.xxx}-utf8.xxx
done)
Обратите внимание, что я использовал | при чтении
вместо опции -exec
в поиске (или передачи в xargs
) из-за манипуляций, которые нам нужно сделать с именем файла, а именно, отрубая .xxx
(с использованием $ {file% .xxx}
) и добавлением -utf8.xxx
.