텍스트 파일에서 대량 파일 이름 바꾸기

텍스트 파일에서 대량 파일 이름 바꾸기

약 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

관련 정보