2016-11-21 6 views
0

ファイルを終了させるファイルパスのリストを含むテキストファイル(log.txt)があります。Bash - txtファイルから宛先を使用してファイルを移動する

/root/NewDir/Testfile.txt 
/root/NewDir/Testfile2.txt 
/root/NewDir2/Alsoatest.txt 
... 

ファイルは、現在のlog.txtと同じ場所に座っている私は、ファイル名を取ることができ、記載された場所に指定されたファイルを移動するスクリプトを作成しようとしています

/root/Dustbin/log.txt 
/root/Dustbin/Testfile.txt 
/root/Dustbin/Testfile2.txt 
/root/Dustbin/Alsoatest.txt 
... 

log.txtファイルに保存します。例えば

# restore Testfile.txt 

結果がのTestfile.txtは/ルート/ゴミ箱/ .../rootに/ NEWDIR/...

から移動しなければならない私はで合計初心者ですbash/shellscriptを使って、これを何時間も調べてみましたが、完全に困惑しています! 私は 'mv'関数を使う必要があるが、ファイル名をマッチさせてlog.txtファイルで指定されたもので宛先を設定する方法がわからない!

誰もが考えているか、正しい方向で私を指すことができるだろうか?

+2

あなたのコードを書くために存在しないので、この質問はあなたが正しい方向に始めるかもしれませんhttp://superuser.com/questions/538306/move-a-list-of-filesin-a-text-file -to-a-directoryと 'basename'機能を提供します。問題が発生した場合は、問題のあるコードをこの質問に追加してください。 –

+2

は 'log.txt'をループし、各ファイル名に' basename'を呼び出して、ディレクトリなしでファイル名を返します。それが復元しようとしている名前と一致する場合は、ファイル名を 'mv'の保存先として使用してください。 – Barmar

+1

似たような質問を探して、 'mv'を研究しようとする他の提案に加えて、[mmv](http://www.tldp.org/LDP/GNU-Linux-Tools-Summary/html/x4055.htm)を見てください。 )と名前を変更します。 – artdanil

答えて

2

で試してみてください:あなたの条件に依存し

#!/bin/bash 

dustbin="/root/Dustbin" 
file="$1" 

mv $dustbin/$file $(grep "/$file$" $dustbin/log.txt) 

は、あなたは、 "MV" の前に "MKDIR" を追加するスクリプトを改善することができました...。

+0

ありがとうございました これは正しい方向に私を向けるのに役立ちました。 – William

関連する問題