这是我的问题陈述:
有一个包含许多html和文本文件的文件夹。我需要以递归方式遍历其中的每一个,并找到这些html /文本文件中引用的各种文件扩展名,如.jpg,.tif,.png等
问题是我没有我想要搜索的扩展名列表。
使用shell脚本实现此目的的最佳方法是什么?
提出一个Reg-ex,它基本上会搜索所有出现的点后跟3或4个字母,并过滤掉那些以空格或逗号或引号等结尾的点?
任何建议都会有所帮助。
答案 0 :(得分:1)
您可以使用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