正規表現を使用してファイルパスのリストからファイル名のみを抽出する方法

正規表現を使用してファイルパスのリストからファイル名のみを抽出する方法

つまり、私のアーカイブ マネージャーは、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|.*/||最後の行/(ある場合) より前のすべての行と/. 自体を削除します。

関連情報