아래와 같은 파일 이름이 있는데 그 앞에 파일 이름을 인쇄하고 싶습니다 .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 이전).