파일 이름 끝, 확장자 앞에 텍스트를 추가하세요.

파일 이름 끝, 확장자 앞에 텍스트를 추가하세요.

여러 개의 mp3가 있는데 확장자 앞에 "_p192"를 추가해야 합니다.

나는 이것을 시도했습니다 :

for f in *.mp3; do printf '%s\n' "${f%.mp3}_p192.mp3"; done

이 기사에 이어:

파일 이름 확장자 앞에 텍스트 추가

그러나 실제로 파일 이름을 바꾸지 않고 파일 이름을 표준 출력으로 인쇄합니다.

답변1

당신이 보고 있는 대답은 실제로 디스크에 있는 파일의 이름을 바꿀 필요가 없고 터미널에 보고된 파일 이름을 변환하기만 하면 되는 질문에 대한 것입니다.

이는 귀하의 솔루션이 작동한다는 것을 의미합니다.만약에mv대신 해당 명령을 사용합니다 printf(단지 문자열을 터미널에 인쇄합니다).

for f in *.mp3; do mv -- "$f" "${f%.mp3}_p192.mp3"; done

printf이름이 예상대로 변환되었는지 확인하기 위해 먼저 루프를 실행하는 것이 좋습니다 .

echo일반적으로 무엇이 실행될지 확인하기 위해 앞에 삽입하는 것이 안전합니다( mv, 및 와 같이 잠재적으로 파괴적인 명령의 루프를 처리할 때 이렇게 하는 것이 아마도 좋은 생각일 것입니다).mvcprm

for f in *.mp3; do echo mv -- "$f" "${f%.mp3}_p192.mp3"; done

또는 더 나은 형식을 사용하세요.

for f in *.mp3; do
    echo mv -- "$f" "${f%.mp3}_p192.mp3"
done

답변2

당신은 그것을 사용할 수 있습니다이름 바꾸기 명령. 예를 들어 파일 확장자 앞에 "_p192"라는 텍스트를 추가하려면 다음을 시도해 보세요.rename -n 's/(.*)\.mp3/$1_p192.mp3/' *.mp3.

위 명령은 현재 디렉토리에서 .mp3 확장자를 가진 모든 파일의 이름을 바꿉니다. 이 명령은 이름이 바뀐 파일만 콘솔에 인쇄합니다. 실제로 파일 이름을 바꾸려면 -n 플래그를 제거하십시오.

's' 수정자는 대체를 나타냅니다. 대체의 첫 번째 부분은 파일 이름의 텍스트를 일치시키는 데 사용되는 정규식입니다. 두 번째 부분은 대체 텍스트입니다. rename 명령의 마지막 인수는 이름을 바꿀 파일을 나타내는 glob 패턴입니다.

관련 정보