我有几个docx文件(大约250个文件),每个文件都有不同的名称。我需要重命名所有这些文件,以便结果必须是每个文件名必须是前一个文件的连续数字,如下所示:
1.docx-2.docx-3.docx -等等
如何在Linux中使用命令行来做到这一点?
我最大的问题是每个文件都有一个完全不可读的名称。
例如:
ÄÿÇäÄùàÄàÜÄæÆëÜÖÆà.docx
因为这些文件最初是用希伯来语命名的,所以当提取zip文件时,这些文件的名称就变得难以辨认。
答案 0 :(得分:1)
这可能对您有用(GNU并行):
parallel --dry-run mv -v ::: *.docx :::+ {1..300}.docx
这将打印命令以将所有以.docx
结尾的文件重命名为连续的数字,最多300个。
要实际运行命令(检查后),请删除--dry-run
选项。
答案 1 :(得分:1)
这可能有效:
parallel mv -- {} {#}.docx ::: *.docx
答案 2 :(得分:0)
尝试:
count=0; for f in *.docx; do mv -i -- "$f" "$((count=count+1)).docx"; done
如果有一个原始文件实际上是用一个简单的数字命名的,例如3.docx
,那么在将文件重命名的同时将它们移动到其他目录会更安全。 :
count=0; for f in *.docx; do mv -i -- "$f" "some/other/dir/$((count=count+1)).docx"; done
count=0
这会将变量count
初始化为零。
for f in *.docx; do
这将开始循环,依次将f
分配给每个docx文件的名称。
mv -i -- "$f" "some/other/dir/$((count=count+1)).docx"
这将重命名/移动文件。 $((count=count+1))
告诉shell每次增加count
。
在bash下,$((count=count+1))
可以简化为$((++count))
。
done
这表明循环结束。