我正在尝试在bash或python中运行一个脚本,它在目录中找到一个nfo文件并重命名它。
就像dir在/ home / disk / xxx / P和里面有文件和这个名为b.nfo的文件我要重命名为1.nfo
我试过bash和python没有运气
击
cd /home/disk/xxx/P
for f in *;do
rename ".nfo" "1.nfo"
done
Python
dir = '/home/disk/xxx/P'
x = os.listdir(dir)
for f in x:
if f.endswith('.nfo'):
new = '/home/disk/xxx/P' +'/'+'1.nfo'
os.system('mv str(f) new')
这些都不起作用..我做错了什么?
答案 0 :(得分:1)
试试这个:os.rename(path_to_file, path_to_renamed_file)
答案 1 :(得分:0)
import glob
for fname in glob.glob("/home/disk/*/P/*.nfo"):
print "Found :",fname
# now rename it or whatever ...
new_name = fname.replace(".nfo",".1.nfo")
os.rename(fname,new_name)
相同的文件会在bash中与ls /home/disk/*/P/*.nfo
答案 2 :(得分:0)
要在python中重命名文件,您可以使用os.rename(src, dest)
http://www.tutorialspoint.com/python/os_rename.htm
至于你自己的代码,它没有用,因为os.system('mv str(f) new')
实际执行了命令“mv str(f)new”。如果你想使用参数,你应该做:os.system('mv %s %s' % (f, new))
。但无论如何不要使用os.system,请使用os.rename()。它更干净,适用于所有平台。
答案 3 :(得分:0)
如果这只是一个单独的文件,那么你正在做...尝试:
#!/bin/bash
cd /home/disk/xxx/P
findIt=$(find . -type f -name b.nfo)
if [[ ${findIt} != "" ]] ; then
mv ${findIt} 1.nfo
else
echo "File was not found"
fi
答案 4 :(得分:0)
您可以使用模块os
和glob
:
import glob
import os
dir_ = '/home/disk/xxx/P'
for fn in glob.glob(os.path.join(dir_, '*.nfo')):
os.rename(fn, os.path.join(os.path.split(fn)[0], '1.nfo'))
答案 5 :(得分:0)
我不确定你想做什么。越来越复杂:
mv /home/disk/xxx/P/b.nfo /home/disk/xxx/P/1.nfo
或
if [ -f /home/disk/xxx/P/b.nfo ]; then
mv /home/disk/xxx/P/b.nfo /home/disk/xxx/P/1.nfo
else
echo "b.nfo not found"
fi
或
for nfofile in /home/disk/xxx/P/*.nfo
do
newname=$(echo $nfofile | <some sort of name transformation>)
mv $nfofile $newname
done