디렉토리에는 무작위로 이름이 지정된 파일이 많이 있습니다 '.wav'
. 예를 들어
090913yui.wav
jiyafa123.wav
.
.
.
awe-6rt.wav
파일명을 다음으로 바꾸고 싶어요
file1.wav
file2.wav
.
.
등.
누구든지 같은 작업을 수행하는 방법을 도와줄 수 있습니까? 터미널을 통해서만 서버에 접속할 수 있어요. 따라서 몇 가지 명령만 사용하면 됩니다.
답변1
파일 이름 와일드카드 패턴이 *.wav
변경하려는 모든 이름과 일치한다고 가정하면 다음 루프를 사용하여 원하는 방식으로 일치하는 이름의 이름을 바꿀 수 있습니다.
n=1
for name in *.wav; do
while [ -e "file$n.wav" ]; do n=$((n+1)); done
mv -- "$name" "file$n.wav"
done
이는 일치하는 모든 이름을 반복합니다. 각 이름에 대해 $n
이름이 file$n.wav
아직 존재하지 않는 정수를 찾습니다 . 그런 다음 현재 이름을 해당 이름으로 변경합니다.
답변2
사용진주의rename
(모든 운영 체제 및 셸에서 작동하며 도구 상자에 있어야 합니다):
rename -n 's/.*/"file" . ++$::c . ".wav"/se' ./*.wav
다음을 제공합니다:
rename(090913yui.wav, file1.wav)
rename(jiyafa123.wav, file2.wav)
또는 제로 패딩을 사용하세요.
rename -n 's/.*/"file" . sprintf("%.3d", ++$::c) . ".wav"/se' ./*.wav
다음을 제공합니다:
rename(./090913yui.wav, file001.wav)
rename(./jiyafa123.wav, file002.wav)
스위치 삭제 -n
, 일명.시운전당신의 시도가 만족스러울 때실제 이름으로 변경.
답변3
zsh의 zmv 사용:
autoload -Uz zmv
n=0; zmv -n '*.wav' 'file$((++n)).wav'
또는 l
파일이 ls
출력 및 기타 대부분의 항목에서 숫자로 정렬 되도록 숫자를 0부터 너비 3까지 채웁니다.
n=0; zmv -n '*.wav' 'file${(l[3][0])$((++n))}.wav'
만족스러우면 삭제 -n
(테스트 실행)합니다. 잠재적인 충돌이 있는지 미리 확인합니다.
n
일부 파일의 이름이 변경된 경우 기존 파일 중 가장 높은 수로 초기화 file<number>.wav
하고 *.wav
모드를 로 변경합니다 (^file<->).wav
.