我的Linux帐户中有456个文件位于共享计算机上,名称如下:
ABC_0,ABC_1,...,ABC_455
我想在其索引中添加911并将其重命名为
ABC_911,ABC_912,...,ABC_1356
之前我曾经这样做过,但我找不到我用过的脚本。
感谢您的帮助。
答案 0 :(得分:0)
这可能不是最好的方式,但它会起作用:
import os, sys
def main():
oldname_prefix = raw_input('Input old name prefix: ')
starting_index = raw_input('Input starting index: ')
ending_index = raw_input('Input the ending index (the size of the largest current file): ')
file_format = raw_input('Input file format: ')
new_starting_index = raw_input('Input the starting index of the new file names: ')
i = int(starting_index)
end = int(ending_index)
difference = int(new_starting_index) - i
while i <= end:
old_name = oldname_prefix + str(i) + file_format
new_name = oldname_prefix + str(i + difference) + file_format
os.rename(old_name, new_name)
i += 1
if __name__ == '__main__':
main()
创建它,将其另存为“renaming.py”或其他内容,并将其放在与要重命名的文件相同的目录中。然后在命令行python renaming.py
键入。当它提示你时,输入“ABC_”,然后输入“0”,然后输入“455”,然后输入它们的任何文件格式(如果没有,只要按下输入而不输入任何内容),然后“900”例如,如果它们是.txt文件,它看起来像这样:
Input old name prefix: ABC_
Input starting index: 0
Input the ending index (the size of the largest current file): 455
Input file format: .txt
Input the starting index of the new file names: 900
为了加倍安全,我建议先将一小部分文件复制到另一个位置然后尝试使用,以防有些问题无法正常工作,但它对我来说很合适。
这是另一种可能性,仅使用Bash。
user@computer:~/directory$ a=0
user@computer:~/directory$ b=900
user@computer:~/directory$ for i in ABC_*; do old=$(printf "ABC_%1d" "$a"); new=$(printf "ABC_%1d" "$b"); mv -- "$old" "$new"; let a=a+1; let b=b+1; done
首先确保现在将a
设置为文件的起始值,b
是最后文件的起始值。然后,此函数循环遍历当前目录中格式为“ABC_ *”的每个文件,获取其当前名称,获取其所需名称,然后重命名它。如果文件具有文件扩展名,则在printf "ABC_%1d"
位的两者中,将其更改为“printf”ABC_%1d.jpg“,或者扩展名为。