如何使用正規表示式從檔案路徑清單中提取裸檔名

如何使用正規表示式從檔案路徑清單中提取裸檔名

因此,我的存檔管理器在提取 tar.xz 檔案時似乎沒有保留目錄層次結構。現在我的下載資料夾很混亂,並且充滿了不在適當位置的檔案。

我想刪除那些且僅刪除存檔中的那些檔案。為此,我嘗試匹配輸出中每個檔案路徑的末尾tar tf file.tar.xz並刪除關聯的檔案。

例如,如果輸入是:

tor-browser_en-US/Browser/firefox
tor-browser_en-US/Browser/firefox.real
tor-browser_en-US/Browser/fonts/
tor-browser_en-US/Browser/fonts/Arimo-Bold.ttf

我希望輸出是:

firefox
firefox.real
Arimo-Bold.ttf

這樣我就可以刪除它們。

我一直在嘗試完成此任務,sed 's/.*\/([^\/]+)$/\1/'但這給出了錯誤sed: -e expression #1, char 19: invalid reference \1 on 's' command's RHS,我不確定還可以嘗試什麼。

答案1

sed '/\/$/d; s|.*/||'

/\/$/d刪除任何帶有尾隨的行/s|.*/||刪除最後一個/(如果有)及其/本身之前的所有內容。

相關內容