파일 이름의 첫 번째 마침표 앞의 모든 문자를 제거하는 방법은 무엇입니까?

파일 이름의 첫 번째 마침표 앞의 모든 문자를 제거하는 방법은 무엇입니까?

파일 이름이 최대 4개의 숫자로 시작하는 파일이 1366개 있습니다. 예를 들어:

128.unique filename.flac
6.unique filename.flac
1288.unique filename.flac

모든 파일이 다음과 같이 존재하도록 모든 숫자와 마침표를 제거하고 싶습니다.

unique filename.flac
unique filename.flac
unique filename.flac

우분투 16.04를 실행 중입니다. 이 목표를 어떻게 달성할 수 있나요?

답변1

쉘을 사용하다

다음 파일부터 시작해 보겠습니다.

$ ls
'unique filename 1.flac'  'unique filename 2.flac'  'unique filename 

다음 명령을 실행해 보겠습니다.

$ for f in [0-9]*flac; do mv "$f" "${f#*.}"; done

위 실행 후 파일은 다음과 같습니다.

$ ls
'unique filename 1.flac'  'unique filename 2.flac'  'unique filename 3.flac'

for f in [0-9]*flac; dofor숫자로 시작하고 로 끝나는 모든 파일 이름에 대해 루프를 시작합니다 flac. mv "$f" "${f#*.}"파일 이름의 시작 부분(첫 번째 마침표 포함)을 제거합니다. done사이클의 끝을 나타냅니다 for.

rename명령

거기 두 개 있어호환되지 않는이 유틸리티 는 Perl과 함께 제공되는 명령(때때로 라고도 함) rename과 함께 작동합니다 .renameprename

다른 버전이 설치되어 있는 경우 rename이 방법은 작동하지 않습니다.

prename이 파일로 다시 시작하고 다음 명령을 실행해 보겠습니다 .

$ ls
'1288.unique filename 3.flac'  '128.unique filename 1.flac'  '6.unique filename 2.flac'
$ prename 's/^\d+\.//' [0-9]*flac
$ ls
'unique filename 1.flac'  'unique filename 2.flac'  'unique filename 3.flac'

Perl의 이름 바꾸기에는 정규식을 사용합니다. \d+\.마침표가 뒤에 오는 하나 이상의 숫자와 일치합니다. ^이 숫자는 파일 이름 시작 부분에 나타나야 합니다. s/^\d+\.//이러한 숫자와 마침표가 무엇이든 대체됩니다.

관련 정보