從文字檔案重新命名大量文件

從文字檔案重新命名大量文件

我有一個包含大約 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

然後使用 GNUparallelmv

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

相關內容