Запустите html2text для всех файлов в каталоге, у которого нет расширения

У меня есть каталог, заполненный множеством файлов без расширений, которые были добавлены вызовом wget.

Я хочу использовать html2text для преобразования всех этих файлов в текстовые файлы.

Другими словами, как запустить эту команду

html2text listbaba=A > listbaba=A.txt

, но не только на listbaba=A, но все файлы в текущем каталоге без расширений. В Интернете вы найдете этот пример:

 for file in *.html; do html2text "$file" > "$file.txt"; done 

, но вопрос заключается в том, что я должен заменить "*.html", чтобы сделать это для всех файлов с no extions ~

1
задан 25 July 2015 в 02:43

1 ответ

Вы можете скрыть шаблон глобуса:

for f in !(*.*); do html2text "$f" > "$f.txt"; done

Это, в отличие от использования find в for f in "$(find [...])"; do [...]; done (или путем запуска find в подоболочке с использованием обратных циклов), не сломается на имена файлов, содержащие новые строки (и FWIW, избегает разворачивания подоболочки и запуска другого процесса).

Для этого вам понадобится extglob опция bash, которая будет включена в вашем текущем bash экземпляр; однако extglob должен быть включен по умолчанию:

user@debian:~/tmp$ shopt extglob
extglob         on

Если extglob выключен, вы можете включить его, выполнив:

shopt -s extglob

и снова выключить его путем запуска:

shopt -u extglob

Пример с использованием echo:

user@debian:~/tmp$ tree
.
├── file1
├── file1.html
├── file2
├── file2.html
├── file3
└── file3.html

0 directories, 6 files
user@debian:~/tmp$ for f in !(*.*); do echo "$f"; done
file1
file2
file3
4
ответ дан 23 May 2018 в 18:47

Другие вопросы по тегам:

Похожие вопросы: