如何在目录列表中找到匹配的文件名?

Pom*_*rio 2 bash grep

我的硬盘中有一堆 ISO 图像,我将它们的全部内容列在一个文本文件中,格式如下:

<immage>.iso, <dir structure>/<filename>.<extension>
Run Code Online (Sandbox Code Playgroud)

例子:

OS Backups.iso, ­ubuntu-­12.­04-­desktop-­i386.­iso 
OS Backups.iso, xubuntu-12.04-desktop-i386.iso
OS Backups.iso, background/pictures.jpg
Pictures vacation 2011.iso, documents/cost_estimates.xls
Pictures vacation 2011.iso, italy/img1.jpg
Pictures vacation 2011.iso, italy/img2.jpg
Run Code Online (Sandbox Code Playgroud)

现在我想对该文本文件发出一个 grep 命令来查找名称中包含“图片”的文件。预期结果将是(对于上一个示例):

Pictures vacation 2011.iso
OS Backups.iso, background/pictures.jpg
Run Code Online (Sandbox Code Playgroud)

关于如何使用 grep 完成这样的事情的任何想法?备择方案?谢谢!

ish*_*ish 5

以下是如何使用grep、使用 Perl 正则表达式语法-Preturn-only-matching-part开关来做到这一点-o

grep -Poi "(.*pictures.*\.iso.*pictures.*|.*pictures.*\.iso|.*pictures.*)"  | sort | uniq
Run Code Online (Sandbox Code Playgroud)

返回:

操作系统备份.iso, background/pictures.jpg
图片假期 2011.iso
  • 对于每一行,grep首先检查它是否是.iso名称中带有“pictures”的文件,文件还包含名称中带有“pictures”的文件,例如:
    图片度假2011.iso,意大利/ pictures5.jpg
  • 如果找到,则打印该行并继续;如果不是,则检查这是否是.iso名称中带有“图片”的文件;
  • 如果是这样,它只打印 ISO 名称;如果没有,它会检查该行是否包含名称中带有“图片”的文件...