BASH删除未在html文件中列出的文件类型

相当新的BASH,并寻求一些建议,因为即使开始这个我正在努力.

我有一个列出大量图像的网页,就像这样

<img src="01.jpg" alt="" width="1920" height="1080" />
<img src="02.jpg" alt="" width="1920" height="1080" />
<img src="03.jpg" alt="" width="1920" height="1080" />

我想运行BASH来阅读这个本地的网页,拿起文件名,即01.jpg,02.jpg和03.jpg,然后删除目录中不匹配的所有其他.jpg文件.因此,例如,如果该文件夹也具有04.jpg,则该文件将被删除,因为它不在网页中.

对不起,我没有发布任何编码,只是根本没有理解这个.

先感谢您

最佳答案 使用
Python
BeautifulSoup(一个强大的Python HTML解析器模块)的解决方案:

python -c '
import sys, glob, bs4;
print("\n".join(
    set(glob.glob("*.jpg")) -
    set(e["src"] for e in bs4.BeautifulSoup(sys.stdin.read()).find_all("img"))
))' < file.htm | xargs rm`

一些注释:它打印当前目录中的jpg文件与< img src =“..”>中找到的文件名之间的设置差异.标签,每行一件

点赞