특정 단어에 파일 이름의 접두사를 인쇄합니다.

특정 단어에 파일 이름의 접두사를 인쇄합니다.

아래와 같은 파일 이름이 있는데 그 앞에 파일 이름을 인쇄하고 싶습니다 .tar. 어떻게 해야 하나요?

참고: 뒷부분 .tar은 고정되어 있고 앞부분 .tar은 가변적입니다.

예:abcd_ef_1.2.3.12+all.tar.gz.md5sum

답변1

예를 들어 sed를 사용하면 다음과 같습니다.

sed -E 's/(.*)\.tar.*/\1/' <<< "abcd_ef_1.2.3.12+all.tar.gz.md5sum"

인쇄 abcd_ef_1.2.3.12+all.

답변2

$ basename -s .tar.gz.md5sum 'abcd_ef_1.2.3.12+all.tar.gz.md5sum'
abcd_ef_1.2.3.12+all

그리고매개변수 확장

$ s='abcd_ef_1.2.3.12+all.tar.gz.md5sum'
$ echo "${s%.tar*}"
abcd_ef_1.2.3.12+all

답변3

어쩌면 find와 sed를 결합할까요?

find . -maxdepth 1 -name "*.tar*" | sed 's/\(.*\)\(\.tar.*\)/\1/g'

설명: sed의 첫 번째 부분

\(.*\)\(\.tar.*\)

tar를 찾았지만 2개의 그룹을 제공했습니다. .tar 앞의 1, tar 뒤의 1

sed의 두 번째 부분

\1

첫 번째 그룹만 선택하세요(.tar 이전).

관련 정보