수백 개의 FLAC 파일에서 기호(물음표)를 제거하는 가장 좋은 방법은 무엇입니까?

수백 개의 FLAC 파일에서 기호(물음표)를 제거하는 가장 좋은 방법은 무엇입니까?

최근에 600개가 넘는 앨범 컬렉션을 FLAC으로 리핑했는데 지금까지 파일에 문제가 있다는 것을 한 번도 발견한 적이 없습니다. Mint 내에서 볼 때 파일 자체는 정상적으로 보입니다. 그들은 모두 잘 놀았습니다.

파일 브라우저의 파일 이미지

여기는 모든 것이 괜찮아 보입니다. 그러나 실제로 이러한 파일을 내 Windows 컴퓨터와 공유하려고 할 때 해당 파일이 재생되거나 복사되지 않는 것을 발견했습니다. Windows에서 파일 이름이 너무 길다는 오류가 표시됩니다. 나는 그것이 헛소리라는 것을 압니다. 왜냐하면 그들은 분명히 그렇지 않기 때문입니다. 그래서 문제는 삼바에 있다고 생각하게 되었습니다.

앨범 폴더를 검색해 보니 각 FLAC 파일마다 하나씩 있다는 사실이 밝혀졌습니다. 끝나기 전에.

콘솔의 파일 이름

속성에 들어가면 대신 이런 흉측한 것이 숨겨져 있는 걸까요? 콘솔에서.

속성의 기호

내 좌절감이 실제로 시작된 곳입니다. 내 문제의 일부를 실제로 해결한 콘솔 명령을 찾았습니다.

여기에 이미지 설명을 입력하세요.

앨범 폴더로 들어가면 ? 표시가 제거되지만 노래 이름과 파일 확장자 사이에 공백이 남습니다.

여기에 이미지 설명을 입력하세요.

간단히 말해서 삭제하는 더 좋은 방법이 있습니까? 기호가 있는 공간을 남기지 않으면서 모든 FLAC 파일을 한 번에 제거하시겠습니까?

아니면 명령을 실행하는 각 앨범을 수동으로 살펴본 다음 각 파일에서 백스페이스 키를 수동으로 실행해야 합니까? 저는 여러분 중 일부가 저보다 이러한 일에 더 능숙하기를 진심으로 바랍니다.

고쳐 쓰다

먼저 이 문제를 해결하는 방법에 대한 제안을 제공해 주신 모든 분들께 감사드립니다.

다음 명령을 실행하여 문제를 해결했습니다.

find -name $'*\n*' -exec rename $'s|\n||g' '{}' \;

내 음악 폴더의 모든 파일에는 개행 문자가 있고 무엇이든 삽입할 수 있어서 파일 이름이 이제 공백(공백) .flac 대신 공백 .flac로 끝나는 것으로 나타났습니다.

답변1

현재 디렉토리에 있는 FLAC 파일의 파일 이름에서 Windows가 좋아하지 않을 수 있는 문자를 제거하려면:

for f in *.flac; do
  mv "$f" "$(echo -n "$f" | tr -cd ' -~' | tr '<>:"/\\|?*' '_')"
done

이는 다음을 수행합니다.

  • 파일 이름에서 ASCII가 아닌 문자나 인쇄할 수 없는 문자를 모두 제거합니다. tr -cd ' -~';

  • Windows에서 허용하지 않는 인쇄 가능한 ASCII 문자를 밑줄( )로 바꿉니다 tr '<>:"/\\|?*' '_'.

'\n'특히 파일 이름은 .flac.

답변2

AlexP의 답변은 좋은 것이지만 추가 소프트웨어를 설치하려는 경우 더 쉬운 옵션이 있습니다.

조사디톡스. 이것은 실행되는 전체 폴더를 자동으로 반복하면서 AlexP가 게시한 쉘 스크립트와 거의 동일한 작업을 수행하는 대부분의 배포판에 패키지된 매우 간단한 프로그램입니다. 사용의 단순성을 위해 내가 설치한 거의 모든 Linux 시스템의 프로그램 목록이 상당히 짧습니다.

단일 디렉토리에 있는 파일에 대한 대안으로,도구 이름 바꾸기즐겨 사용하는 텍스트 편집기를 사용하여 터미널에서 빠르고 쉽게 이름을 일괄 변경할 수 있습니다. Vi 또는 EMACS 스타일 편집기와 함께 사용하면 편집기에 내장된 정규식 지원을 사용하여 파일 이름의 복잡한 일괄 변환을 수행하는 매우 간단한 방법을 제공합니다.

관련 정보