2011-08-23 84 views
4

我有大約1000個文件夾,我想提取單個文件從上傳到服務器,但我需要保留目錄樹。保存目錄樹,同時複製文件與cp

cp */myFile.txt ../newTree 

是什麼,我基本上是想這樣做,但不是每個文件被保存到../newTree/myFile.txt我想這是../newTree/*/myFile.txt其中*cp命令通配符。

我不能在這個男人文件中找到一個標誌,所以我想我可能需要除了cp

回答

7

其他實用程序使用rsync:

find ./ -name myFile.txt -print0|rsync -0adv --files-from=- ./ ../newTree/ 

沒有的rsync:

您可以找到所有文件,爲您在newTree中創建目錄的每個文件,並將文件複製到它。

for file in */myFile.txt; do 
    dir=$(dirname "$file") 
    mkdir -p "../newTree/$dir" 
    cp "$file" "../newTree/$dir" 
done 
+0

謝謝,我不太瞭解rsync,但我會研究它。該腳本更符合我的舒適程度 –

+1

只需跟進一下,它應該是'dir = $(dirname「$ file」)' –

4

存儲所有在tar存檔文件,然後提取到服務器上。

+0

或者執行相同的操作,將輸出從tar發送到標準輸出,然後管道到另一個tar程序將解壓stdin:'find ./ -name myFile.txt -print0 | tar cvf - | tar xvf - -C ../ newTree /' –

相關問題