쉘 스크립트를 통해 파일의 꼬리 번호를 자르는 방법은 무엇입니까?

쉘 스크립트를 통해 파일의 꼬리 번호를 자르는 방법은 무엇입니까?

다음 파일이 있습니다. 총 4개의 파일이 있습니다:

cert1.pem chain1.pem fullchain1.pem privkey1.pem

각 파일의 꼬리 번호를 잘라내고 싶습니다( 1여기). 쉘 스크립트를 사용하여 이를 어떻게 자동화할 수 있습니까? 나는 일부 명령에 익숙하지만 이런 종류의 일괄 처리를 처리하기 위한 쉘 스크립트를 작성하는 데는 능숙하지 않다고 생각합니다.

답변1

후행 숫자가 단일 숫자이고 둘 다 .pem파일인 경우 매개변수 확장을 사용하여 숫자와 확장자를 제거한 다음 확장자를 바꿀 수 있습니다.

for file in cert1.pem  chain1.pem  fullchain1.pem  privkey1.pem
do
  mv "$file" "${file%%?.pem}.pem"
done

%%매개변수 확장은 단일 문자( ) 중 가장 긴 후행 일치 항목을 제거하는 방식으로 작동하며 ?, .pem완료되면 수동으로 .pem끝에 다시 추가합니다.

certX.pem이는 또는 fullchain-.pem해당 ?문자가 단일 문자로 확장되는 것과 같은 파일 이름도 변경된다는 점에 유의하십시오 .

위의 예에서는 이름을 바꿀 파일을 수동으로 나열했기 때문에 이것이 더 안전해졌습니다. 비슷한 접근 방식을 사용할 수도 있습니다.

for file in *1.pem
do
  mv "$file" "${file%%?.pem}.pem"
done

....을 1.pem사용하여 파일을 명시적으로 반복합니다.

설정:

$ ls
cert1.pem  chain1.pem  fullchain1.pem  privkey1.pem

구현하다:

$ for file in cert1.pem  chain1.pem  fullchain1.pem  privkey1.pem
  do 
    mv "$file" "${file%%?.pem}.pem"
  done

결과:

$ ls
cert.pem  chain.pem  fullchain.pem  privkey.pem

관련 정보