다음과 같은 이름의 1000개 파일이 있는 디렉토리가 있습니다.
2019-07-21-17-50-06 - 123 - abc - xyz.zzz
날짜와 시간인 가장 왼쪽 19자만 필요합니다.
Mac에는 이름 바꾸기 명령이 없으므로 여기에서 mv 명령도 작동한다는 것을 알았습니다.파일 이름 자르기이것은 나에게 이것을 준다
for i in *.mp3; do mv "$i" "${i:19}"; done
그런데 왼쪽이 아닌 오른쪽에서 잘린 것 같아요.
가장 왼쪽 19자와 접미사를 유지하도록 이 명령을 어떻게 변경할 수 있습니까?
감사해요!
답변1
${i:19}
19번째(음, 20번째 - 0 인덱싱 작동) 문자에서 시작하는 하위 문자열입니다. 처음부터 19자 부분 문자열은 입니다 ${i:0:19}
.
모든 파일의 확장자 앞에 19자가 있는 경우:
for i in *; do mv "$i" "${i:0:19}.${i##*.}"; done
${i##*.}
filename 의 마지막 항목까지 모든 항목을 제거하고 .
확장자만 남깁니다.
Perl 이름 바꾸기는 Homebrew에서 사용할 수 있습니다.
% brew info rename
rename: stable 1.600 (bottled), HEAD
Perl-powered file rename script with many helpful built-ins
http://plasmasturm.org/code/rename
답변2
${i%% - *}
첫 번째 발생부터 시작하여 모든 항목을 삭제할 수 있습니다 -
.