Filenames
我有包含許多文件的相對路徑的文件,如何僅將 PDF 文件的名稱從該文件列印到另一個文件中?
所以我使用 find 命令將滿足特定條件的文件的相對路徑寫入文本文件。現在,我想處理這個文件,所以只列印文件名而不列印路徑。因此,必須解析文件中的每一行,如果它包含 PDF 文件的名稱,則必須將名稱列印到螢幕上。這個怎麼做?這基本上是批處理的一種形式,我還沒有找到可以以這種方式進行文件處理的解決方案。
在這裡,我設置了一個帶有一些 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
希望有幫助。