我的文件包含许多文件的相对路径,如何仅将 PDF 文件的名称打印到另一个文件中?

我的文件包含许多文件的相对路径,如何仅将 PDF 文件的名称打印到另一个文件中?

因此,我使用 find 命令将满足特定条件的文件的相对路径写入文本文件。现在,我想处理这个文件,因此只打印文件名而不打印路径。因此,必须解析文件中的每一行,如果它包含 PDF 文件的名称,则必须将该名称打印到屏幕上。这个怎么做?这基本上是批处理的一种形式,我还没有找到可以以这种方式用于文件处理的解决方案。

答案1

在这里,我设置了一个相对路径名列表,其中一些包含 pdf,有些则不包含。

$ cat list.txt
../myfiles/some.pdf
../myfiles/another.pdf
../../old.pdf
../../notapdf.txt
../nowhere/pdf with a space.pdf

然后是剧本。

while read -r line; do echo $(basename "$line")

done <<< $(grep -i "\.pdf$" list.txt)

这将在文件列表上执行不区分大小写的 grep,以获取 .pdf、.PDF 甚至 .PdF 文件(假设它们是这样命名的)。 basename 命令将剥离前导路径并留下文件名部分并打印它。这也将处理文件名中的空格。

输出将是:

some.pdf
another.pdf
old.pdf
pdf with a space.pdf

希望有帮助。

相关内容