查找其他文件中的文件名字符串的所有用法

时间:2015-12-08 10:11:32

标签: linux bash shell search

我有一个图像目录(例如image1.png)。但是,图像可以在目录中的目录内(递归)。

我想通过这个图像目录,获取文件名,并搜索另一个目录中的所有用法(也是递归的)。如果没有用法,我想标记它。本质上我想找出任何文件中没有使用的图像(php / html / css / etc)。

我已经看到了一些首先使用的提示

find . -name '*' -exec file {} \; | grep -o -P '^.+: \w+ image'

接着是

grep -rnw '/path/to/somewhere/' -e "pattern"

但我的linux命令技能正在努力为此编写一个脚本。 有人曾经这样做过吗?

示例数据: 目录:

.
├── aboutus
│   └── logos
│       ├── us.jpg

使用示例:

background-image: image-url('images/aboutus/logo/us.jpg');

1 个答案:

答案 0 :(得分:0)

您可以使用这样的循环来获取未找到的图像列表:

cd /base/dir/to/check/presence/of/image/files

while IFS= read -d '' -r f; do
   img="${f##*/}" # get the filename
   grep -qFr "$img" --include=*.html --include=*.php --include=*.css . ||
      echo "$img not found"
done < <(find /img-dir -type f -print0) > imgNotFound.txt