
답변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