텍스트 파일에서 많은 수의 파일 이름 바꾸기

텍스트 파일에서 많은 수의 파일 이름 바꾸기

약 7,000개의 파일이 있는 폴더가 있는데 각 파일에는 74857.mkv 74858.mkv 등과 같이 번호가 매겨져 있습니다.

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

또한 모든 파일 번호와 파일 이름이 포함된 텍스트 파일도 있습니다.

이 순서대로:

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

예를 들어 각 파일의 이름을 숫자에서 이름으로 바꾸고 싶습니다.

74857.mkv > 촬영중 S01 E01.mkv

74858.mkv > 촬영중 S01 E02.mkv

이 작업을 수행하려면 아무 명령이나 사용하세요. 저는 수동으로 수행해 왔으며 단 5일 만에 50개의 파일을 처리했습니다!

답변1

우리가 말하면"샘플 이름입니다"현재 파일 이름 위의 문자열입니다. .mkv즉, 주어진

$ cat file.txt 
Taken S01 E01
74857.mkv
Taken S01 E02
74858.mkv

당신이 실제로 원하는

74857.mkv > 촬영 S01 E01.mkv

74858.mkv > 촬영 S01 E02.mkv

그런 다음 GNU를 사용 parallel하고 다음을 수행하십시오 mv.

parallel -N2 echo mv -- {2} {1}.mkv < file.txt

echo올바른 명령을 작성하고 있다고 확신하면 제거하십시오.

답변2

내가 당신이라면 이 작업을 작은 배치로 수행하고 복사본으로 테스트하겠지만 이와 같은 것이 당신에게 적합할 것입니다.

while read n; do read f; mv $f "$n.${f##*.}"; done < file

시작하기 전에 출력을 확인하는 것이 좋습니다.

while read n; do read f; echo mv $f "$n.${f##*.}"; done < file > checkfile

이름이 바뀐 파일에 오류가 없는지 확인하십시오.

만족할 때까지 원본을 안전하게 보관할 수 있도록 복사본을 만들 수 있는 충분한 공간과 시간이 있다면 더 안전합니다...

while read n; do read f; cp $f "/a/safe/location/$n.${f##*.}"; done < file

노트

mv프로세스를 되돌리려면 명령에서 이름의 순서를 바꾸면 됩니다.

mv "$n.${f##*.}"  $f

답변3

그리고 perl:

perl -lne '$dst = "$_.mkv"; $src = <>; chomp $src; rename $src, $dst
  or warn "$src -> $dst: $!\n"' your-file

그리고 zsh:

zmodload zsh/files # to get a builtin mv
while IFS= read -ru3 dst && IFS= read -ru3 src; do
   mv -- "$src" "$dst.mkv"
done 3< your-file

관련 정보