파일 이름이 최대 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; do
for
숫자로 시작하고 로 끝나는 모든 파일 이름에 대해 루프를 시작합니다 flac
. mv "$f" "${f#*.}"
파일 이름의 시작 부분(첫 번째 마침표 포함)을 제거합니다. done
사이클의 끝을 나타냅니다 for
.
펄 rename
명령
거기 두 개 있어호환되지 않는이 유틸리티 는 Perl과 함께 제공되는 명령(때때로 라고도 함) rename
과 함께 작동합니다 .rename
prename
다른 버전이 설치되어 있는 경우 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+\.//
이러한 숫자와 마침표가 무엇이든 대체됩니다.