![借助文本文件重命名文件](https://linux22.com/image/1398870/%E5%80%9F%E5%8A%A9%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6%E9%87%8D%E5%91%BD%E5%90%8D%E6%96%87%E4%BB%B6.png)
我正在尝试重命名大量文件,但不知道如何将新名称融入文本文件。
我有许多视频文件想要重命名,使用文本文件中的新列表。例如
dfhjkg.avi
wyrtrr.avi
jtylktmn.avi
ertjnn.avi
要用另一个文本文件中的新文件名重命名:
File_01_01.avi
File_01_02.avi
File_01_03.avi
File_01_04.avi
我正在使用 Kubuntu 12.04。
答案1
答案2
我用过重命名工具,特别qmv
是该包中的“ ”命令,多年来一直用于这种事情。
默认情况下,“ qmv
”在每一行上显示两次文件名,您只需修改第二次出现的文件名。这样您就可以始终看到原始文件名。但是,对于长文件名,这可能会很麻烦,因为长文件名会导致编辑器换行,所以我有这个别名:
alias qqmv="qmv -fdo"
“ ”选项改变文本文件中使用的-f
格式,“ ”是格式规范,基本上告诉它只列出文件名一次。qmv
do
答案3
假设您有两个文件old.txt
和new.txt
,每个文件包含一行需要重命名的文件。然后您可以简单地调用:
paste old.txt new.txt | while IFS=$'\t' read -r old new; do
mv -i -- "$old" "$new"
done
这仅在文件名不包含换行符或制表符时才有效。因此,您创建一个名为的文件old.txt
:
dfhjkg.avi
wyrtrr.avi
jtylktmn.avi
ertjnn.avi
与new.txt
:
File_01_01.avi
File_01_02.avi
File_01_03.avi
File_01_04.avi
然后运行上面的脚本。在你的例子中,它会调用:
mv -- dfhjkg.avi File_01_01.avi
mv -- wyrtrr.avi File_01_02.avi
mv -- jtylktmn.avi File_01_03.avi
mv -- ertjnn.avi File_01_04.avi
…但mv
仍会要求您确认是否有文件将被覆盖。用于echo mv …
仅打印命令而不是执行命令。