这是我的问题陈述:
有一个文件夹包含许多 html 和文本文件。我需要递归地浏览它们中的每一个,并找到这些html/文本文件中引用的各种文件扩展名,如.jpg,.tif,.png等
问题是我没有定义要搜索的扩展名列表。
使用 shell 脚本实现此目的的最佳方法是什么?
想出一个正则表达式,它基本上会搜索一个点后跟 3 或 4 个字母的所有出现,并过滤掉以空格或逗号或引号等结尾的那些?
任何建议都会有所帮助。
您可以使用 shell 脚本通过正则表达式解析文件名,但直接版本非常简单:
$ 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