在bash或python中查找并重命名文件

时间:2016-04-18 21:08:17

标签: python bash rename

我正在尝试在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')

这些都不起作用..我做错了什么?

6 个答案:

答案 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)

您可以使用模块osglob

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