尝试查找某个目录中其他文件未引用的所有文件

尝试查找某个目录中其他文件未引用的所有文件

我有一个项目,其中有一个图像文件夹,其中包含图像,我很确定其中一些未使用。所以我想列出任何其他文件中未引用的所有图像。我对使用终端的经验不是很丰富,但这是我迄今为止所知道的并且有效的:

位于项目的根文件夹中。

列出所有图像(我知道它们都是 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 文件的小写名称。

第一个管道构建小写文件名的排序列表。

我们将其传递给-fwithgrep进行-F固定字符串搜索并-o仅输出匹配的文本。

其输出也被排序并转换为小写,并与我们之前的列表进行比较。然后我们报告仅在第一个列表中找到的条目。

相关内容