Вот моя проблема:
Существует папка со многими html и текстовыми файлами. Мне нужно рекурсивно пройти через каждый из них и найти все виды расширений файлов, на которые ссылаются эти файлы html/text, такие как.jpg,.tif,.png и т.д.
Проблема в том, что у меня нет определенного списка расширений, которые я хочу найти.
Каким будет лучший способ достичь этого с помощью сценария оболочки?
Придумать Reg-ex, который будет по существу искать все вхождения точки, за которой следует 3 или 4 буквы, и отфильтровывать те, которые заканчиваются пробелом или запятой, или цитата и т.д.?
Любые предложения будут полезны.
Вы можете использовать сценарий оболочки для анализа имени файла с помощью регулярного выражения, но прямолинейная версия довольно проста:
$ cat *.{txt,html} | grep -oP '\b[A-Za-z0-9_]+\.[A-Za-z0-9]{1,4}\b' | awk -F. '{ print "." $(NF) }' | sort -u
Для рекурсивного поиска:
find . -name '*.txt' -or -name '*.html' -exec grep -oP '\b[A-Za-z0-9_.]+\.[A-Za-z0-9]{1,4}\b' {} \; | awk -F. '{ print "." $(NF) }' | sort -u
ls -1
. Удачи.