如何创建一个Bash脚本来查找项目中未使用的图像?

Vol*_*ike 2 bash shell grep image

如何创建一个Bash shell脚本,可以识别所有.jpg,.gif和.png文件,然后通过url(),href或src在文件夹中的任何文本文件中识别哪些文件没有链接?

这是我开始的,但我最终得到了我想要的反转.我不想知道引用的图像,但是未引用(也称为"孤立")图像:

# Change MYPATH to the path where you have the project
find MYPATH -name *.jpg -exec basename {} \; > /tmp/patterns
find MYPATH -name *.png -exec basename {} \; >> /tmp/patterns
find MYPATH -name *.gif -exec basename {} \; >> /tmp/patterns

# Print a list of lines that reference these files
# The cat command simply removes coloring
grep -Rf /tmp/patterns MYPATH | cat

# great -- but how do I print the lines of /tmp/patterns *NOT* listed in any given
# *.php, *.css, or *.html?
Run Code Online (Sandbox Code Playgroud)

Vol*_*ike 8

drysdam的帮助下,我创建了这个Bash脚本,我称之为orphancheck.sh并使用"./orphancheck.sh myfolder"调用.

#!/bin/bash

MYPATH=$1

find "$MYPATH" -name *.jpg -exec basename {} \; > /tmp/patterns
find "$MYPATH" -name *.png -exec basename {} \; >> /tmp/patterns
find "$MYPATH" -name *.gif -exec basename {} \; >> /tmp/patterns

for p in $(cat /tmp/patterns); do
    grep -R $p "$MYPATH" > /dev/null || echo $p;
done
Run Code Online (Sandbox Code Playgroud)


Osa*_*bie 5

我参加聚会有点晚了(我在自己寻找答案时发现了此页面),但如果它对某人有用,这里有一个稍微修改过的版本,它返回带有文件名的路径(并搜索更多文件类型):

#!/bin/bash

if [ $# -eq 0 ]
  then
    echo "Please supply path to search under"
    exit 1
fi
MYPATH=$1

find "$MYPATH" -name *.jpg > /tmp/patterns
find "$MYPATH" -name *.png >> /tmp/patterns
find "$MYPATH" -name *.gif >> /tmp/patterns
find "$MYPATH" -name *.js >> /tmp/patterns
find "$MYPATH" -name *.php >> /tmp/patterns

for p in $(cat /tmp/patterns); do
    f=$(basename $p);
    grep -R $f "$MYPATH" > /dev/null || echo $p;
done
Run Code Online (Sandbox Code Playgroud)

不过,需要注意的是,仅像这样静态地查看代码就可能会出现误报,因为代码可能会动态创建一个随后被引用(并预期存在)的文件名。因此,如果您在不了解您的项目的情况下盲目删除该脚本返回路径的所有文件,您可能会后悔。