정규식을 사용하여 파일 경로 목록에서 기본 파일 이름을 추출하는 방법

정규식을 사용하여 파일 경로 목록에서 기본 파일 이름을 추출하는 방법

그래서 내 아카이브 관리자는 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|.*/||마지막 /(있는 경우) 이전의 모든 항목과 /자체 항목을 제거합니다.

관련 정보