2016-04-18 125 views
0

我試圖運行在bash或Python的腳本查找目錄內的NFO文件並重新命名它重命名文件。查找和bash或蟒蛇

像dir是在/ home /磁盤/ XXX/P和裏邊有文件,該文件名爲b.nfo,我想重新命名爲1.nfo

我都嘗試bash和蟒蛇沒有這些工作的運氣

猛砸

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') 

無..什麼我做錯了嗎?

+1

是否只有您要重命名一個文件?只是b.nfo? – bluerojo

+1

當你運行這些腳本時發生了什麼? – skrrgwasme

回答

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')) 
+0

其實這個舊文件重命名爲oldfile1.nfo –

+0

你是對的。我誤解了這個問題。固定。 –

+0

謝謝...但是,如果我運行此文件消失就像被刪除.. –

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

+0

這也爲舊文件添加一個..也許我解釋不好..我想重命名爲1.nfo .. –

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()。它更清潔,並將在所有平臺上工作。

1

試試這個:os.rename(path_to_file, path_to_renamed_file)

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 
+0

或'findIt = $(find。-type f「* .nfo」)全名。如果你不知道什麼文件將被稱爲究竟 – bluerojo

+1

你會想要更好的字符串處理我的評論添加上面如果有一個以上的「的.nfo」文件在該位置 – bluerojo

+0

發現是一個可能性:路徑必須先表達式:* .nfo 用法:find [-H] [-L] [-P] [-Olevel] [-D help | tree | search | stat | rates | opt | exec] [path ...] [expression ] 文件未找到 –

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