
.m4a
오디오 파일에서 원하지 않는 문자를 제거하기 위해 하위 디렉터리의 확장자를 사용하여 파일 이름을 반복적으로 바꾸고 싶습니다 .'
].
04 Tears Don't Fall.m4a
이는 다른 파일이 없으면 파일에 다음과 같은 일이 발생하기 때문입니다.
2005-09-30 - Poison(Deluxe Edition) [US - 88697-09021-2 - 2007]/04 Tears Don't Fall.m4a 파일을 로드할 수 없습니다. 지원되는 파일 형식이 아닐 수도 있나요? ffmpeg를 사용하여 로드하려고 하면 다음 오류가 발생합니다: FFmpeg가 파일을 읽을 수 없습니다.
답변1
ffmpeg
작은 따옴표가 포함된 파일 이름을 읽는 것이 완벽하게 가능하기 때문에 작업에 뭔가 문제가 있는 것 같습니다 .
mkdir '2005-09-30 - The Poison (Deluxe Edition) [US - 88697-09021-2 - 2007]'
cp -p {another.m4a} "2005-09-30 - The Poison (Deluxe Edition) [US - 88697-09021-2 - 2007]/04 Tears Don't Fall.m4a"
ffmpeg -i "2005-09-30 - The Poison (Deluxe Edition) [US - 88697-09021-2 - 2007]/04 Tears Don't Fall.m4a"
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '2005-09-30 - The Poison (Deluxe Edition) [US - 88697-09021-2 - 2007]/04 Tears Don't Fall.m4a':
Metadata:
major_brand : M4A
minor_version : 0
compatible_brands: M4A mp42isom
...
어쩌면 당신이 올바르게 인용하지 않았을 수도 있습니다. 불행하게도 코드를 보지 않고는 이를 확인할 수 있는 방법이 없으며 가능한 문제로 표시할 뿐입니다.
그러나 문자 집합을 제거하기 위해 파일 이름을 바꾸려면 다음과 같은 코드를 사용할 수 있습니다.
find . -type f -name '*.m4a' -exec \
sh -c 'for f in "$@"; do echo mv "$f" "${f'"//[\']/"'}"; done' _ {} +
echo
실행할 준비가 되면 삭제하세요 mv
.
[\']
제거할 추가 문자를 포함하도록 범위를 확장할 수 있습니다 . 예를 들어 [\'\\\"\\\`:]
작은따옴표, 큰따옴표, 역따옴표 및 콜론을 제거 하도록 선택할 수 있습니다 . (작은따옴표는 접두사로 시작해야 하며 \
, 큰따옴표, 백틱 및 달러 기호는 앞에 와야 합니다 \\\
.)
답변2
#!/bin/bash
shopt -s globstar
for fn in **/*\'*.m4a; do echo mv "$fn" "${fn/\'/}"; done
echo
실제로 이름을 바꾸기 전에 결과를 확인해야 합니다.
답변3
먼저 $1을 $1((') 제외)로 이동하는 쉘 스크립트를 작성하고 이를 Special_move.sh라고 부르겠습니다. 파일에 실행 권한을 부여하는 것을 잊지 마십시오.
#!/bin/bash
orgFile=$1
destFile=${orgFile//\'/}
echo "mv $orgFile $destFile"
#mv $orgFile $destFile
그런 다음 파일이 저장된 루트 디렉터리로 이동하고 cmd를 입력합니다.
find . -name "*'*.m4a" -exec /absolute/path/special_move.sh {} \;
만족스럽게 테스트하고 스크립트 파일의 마지막 줄의 주석 처리를 제거합니다.