2016-04-18 14 views
0

dir内にnfoファイルを配置して名前を変更するスクリプトをbashまたはpythonで実行しようとしています。 dirのようbashまたはpythonでファイルを検索して名前を変更します。

はホーム/ディスク/ XXX/P /であり、内部に存在したファイルがあり、私は

を1.nfoする名前を変更することb.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') 

なし...何私は間違っている?

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

同じファイルを使用して、独自のコードについてはos.rename(src, dest)http://www.tutorialspoint.com/python/os_rename.htm

を使用することができますPythonでファイルの名前を変更するにはls /home/disk/*/P/*.nfo

+0

これも古いファイルに.1を加えます。たぶん私は悪いことを説明しました。1.nfoに名前全体の名前を変更したいです。 –

0

とbashで合っているでしょうos.system('mv str(f) new')が実際に実行するので、それは動作しませんでしたコマンド "mv str(f)new"。あなたがしなければならないparamsを使用したい場合:os.system('mv %s %s' % (f, new))。しかし、とにかくos.systemを使用しないで、os.rename()を使用してください。はるかにクリーンで、すべてのプラットフォームで動作します。

1

これを試してみてください:os.rename(path_to_file, path_to_renamed_file)

0

を、これは単に1つのファイルであれば、それはあなたがやっている表示される...試してみてください。

#!/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

find:式:* .nfo 使用法:[-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 
関連する問題