我有一个项目,其中有一个图像文件夹,其中包含图像,我很确定其中一些未使用。所以我想列出任何其他文件中未引用的所有图像。我对使用终端的经验不是很丰富,但这是我迄今为止所知道的并且有效的:
位于项目的根文件夹中。
列出所有图像(我知道它们都是 png)。
find . -name "*.png" -exec basename {} \;
搜索不在 .svn 中的所有文件
grep -Iri --exclude-dir=".svn" 'searchTerm' .
现在我被困住了。我的下一步是尝试将第一个命令作为 searchTerm 传输到第二个命令,但没有成功。无论如何,这几乎与我尝试做的相反。但如果有效,结果可能会用于手动检查。但我真正想要的只是列出未引用的图像。
答案1
你可以这样做:
find . -name '*.png' |
awk -F/ '{print tolower($NF)}' |
sort -u > ~/tmp/png-files &&
grep -IhFriof ~/tmp/png-files --exclude-dir=".svn" . |
awk '{print tolower($0)}' | sort -u | comm -23 ~/tmp/png-files -
这将为您提供从未引用的 png 文件的小写名称。
第一个管道构建小写文件名的排序列表。
我们将其传递给-f
withgrep
进行-F
固定字符串搜索并-o
仅输出匹配的文本。
其输出也被排序并转换为小写,并与我们之前的列表进行比较。然后我们报告仅在第一个列表中找到的条目。