
다음 파일에서 확장자와 접두사를 제거하고 싶습니다.
awstats.www.test1.com.conf
awstats.www.test2.com.conf
awstats.www.test3.com.conf
awstats.
및를 삭제 .conf
하고 파일은 www.test1.com
그대로 두어야 합니다. 어떻게 해야 하나요?
답변1
파일과 동일한 디렉토리에 있다고 가정합니다.
for name in awstats.*.conf; do
basename "${name#awstats.}" .conf
done
루프 내부의 코드는 먼저 접두사를 제거한 다음 awstats.
표준 인수 대체를 사용하여 접미사를 제거 합니다 .$name
basename
.conf
다음을 호출하지 않고 두 단계로 수행할 수도 있습니다 basename
.
for name in awstats.*.conf; do
newname=${name#awstats.} # trim off prefix
newname=${newname%.conf} # trim off suffix
printf '%s\n' "newname"
done
이 두 루프는 파일 이름을 바꾸지 않습니다.
답변2
나는 rename
( perl-rename
일부 시스템에서는 다른 시스템에서만 rename
) 여기가 가장 쉽다고 가정합니다.
rename 's/^awstats\.//;s/\.conf$//' awstats.*.conf
정규식 설명:
s/^awstats\.//
awstats.
줄(파일 이름)의 시작 부분에서는 아무것도 바꾸지 마십시오.s/\.conf$//
.conf
줄 끝(파일 이름)을 공백으로 바꿉니다.
-n
테스트 실행을 위해 이 옵션을 사용하세요 !