Как извлечь голые имена файлов из списка путей к файлам с помощью регулярных выражений

Как извлечь голые имена файлов из списка путей к файлам с помощью регулярных выражений

Итак, мой менеджер архивов, похоже, не сохранил иерархию каталогов при извлечении файла 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|.*/||удаляет все до последней /(если есть) и /сам символ .

Связанный контент