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