2017-05-29 180 views
-1

給定源文件路徑和目標路徑。如何編寫一個shell腳本將源文件複製到目標目錄的所有文件夾中?在目錄的所有文件夾中複製文件

+3

你可以添加一些細節/例子,澄清你想要什麼? (我問,因爲codeforester清楚地解釋你的問題不同於我。) – ruakh

+0

@ruakh:我的編輯出了什麼問題?我遵循這裏的指導:https://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/ – codeforester

+3

@codeforester:你改變標題問你想問的問題,而不是這個問題似乎在OP的想法中。您正在考慮製作該文件的一個副本。 OP似乎希望在目標目錄的每個子目錄中都有該文件的副本,因此如果有20個子目錄,則會有20個副本 - 每個子目錄一個。現在,這可能只是一個使用英語的問題,但表面問題似乎是這樣 - 而你的回答沒有解決它。現在,我可能是錯的。魯阿克可能已經有了另一個含義。 OP需要澄清! –

回答

2

您不需要腳本。使用cp -R遞歸副本:

cp -R source_path dest_path 

要進行遞歸複製,同時保留文件屬性,如最後修改時間等,使用-p選項,以及:

cp -Rp source_path dest_path 

man cp

-R 

如果source_file指定一個目錄,cp會複製目錄並整個子樹連接在那個點上。如果 source_file以/結尾,則該目錄的內容被複制 而不是目錄本身。該選項還會導致符號鏈接被複制,而不是通過間接鏈接,並且對於cp到 創建特殊文件而不是將它們作爲普通文件複製。 創建的目錄與相應的源目錄 目錄具有相同的模式,未由進程'umask修改。

0

聽起來好像你想將單個文件複製到目標目錄下的所有子目錄(以及目標目錄本身)。如果這是正確的,那麼:

find $targetdir -type d -exec cp $sourcefile {} \; 
相關問題