從主目錄遞歸複製單一檔案到所有目錄中

從主目錄遞歸複製單一檔案到所有目錄中

我在一台使用 CentOS 的專用伺服器上,在這台伺服器上,一個主目錄中有 5000 多個目錄。

在主目錄中我有一個index.php.我想將其複製index.php到所有 5000 多個目錄中,但我知道如何手動執行此操作的唯一方法。

有沒有一種方法可以透過命令列輸入類似的內容cp並使其在目錄中工作?我會將其一直複製到所有目錄以及我開始進入的主目錄中的子目錄。

答案1

find . -mindepth 1 -type d -exec echo cp index.php {} \;

上面的命令將以遞歸方式將index.php文件從當前目錄複製到所有子目錄 - 但不是立即複製。

當您確保它列印出所有正確的複製命令後,刪除echo並執行它。echo只是一種保護措施,可以在實際執行您可能不想要的操作之前向您展示整個命令將執行的操作。

另一種有趣的方法——感謝@RedGrittyBrick——是符號連結文件而不是簡單地複製它們。這樣,index.php子目錄中的檔案都只是根目錄中檔案的快捷方式,而不是重複的。為此,請在上述命令中更改cpln -s.這樣,當您更改“主”index.php檔案時,子目錄中的所有其他檔案仍然會指向它,因此在查看時也會自動更改。


為了完整起見,整個命令分解如下:

  • find .,在目前目錄中搜尋
  • -mindepth 1,至少深入一個目錄
  • -type d, 只找目錄
  • -exec …,執行命令echo cp index.php {},其中{}替換為找到的每個目錄。該命令被多次調用,每個子目錄調用一次。

相關內容