2016-11-21 80 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從/根/垃圾桶移動/ ...到/根/ NEWDIR/...

我在一個總的新手bash/shellscript,並試圖研究這個好幾個小時,但完全難住! 我知道我需要使用'mv'函數,但不知道如何通過匹配文件名來填充log.txt文件中指定的目標!

會有人有任何想法或能夠指出我在正確的方向嗎?

+2

SO,不存在編寫你的代碼,這個問題可能會讓你開始正確的方向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