Выполненный html2text на всех файлах в каталоге, которые не имеют расширения

Мне заполнили каталог многими файлами без расширений, которые были помещены там вызовом к wget.

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

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

html2text listbaba=A > listbaba=A.txt

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

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

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

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

2 ответа

Можно использовать not флаг в find команда и выполнить итерации по тому выводу.

Находят файлы, которые не имеют расширения, или более конкретный, файлы, которые не имеют точки на их имя:

find . -type f -not -name "*.*"

Выполняют итерации по этим файлам и вызову html2text:

for file in `find . -type f -not -name "*.*"`; do html2text "$file" > "$file.txt"; done
3
ответ дан 3 December 2019 в 06:25

Можно инвертировать globbing шаблон:

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
ответ дан 3 December 2019 в 06:25

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

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