本簡短指南介紹瞭如何使用命令行將文件複製到多個目錄。 find
, cp
, echo
, xargs
什麼時候 tee
Linux 上的命令。
前幾天我想將一些視頻複製到我 Arch Linux 桌面上的另一個文件夾中。如您所知,您可以通過右鍵單擊文件並選擇它來執行此操作。 Copy
選擇一個選項並將其粘貼到目標目錄/文件夾中。
但是,我想知道是否有其他方法可以一次將文件複製到多個目錄。 如果您想一次將一個文件複製到多個不同的目錄,您可能會發現它很有用。我進行了一些網絡搜索並提出了以下解決方案。
重要警告:
請注意,以下命令不要求確認。如果目標目錄中存在同名文件,則會自動替換。
如果您是 Linux 新手,我們建議您在任何測試機器上測試這些命令,然後再開始在生產中使用它。這樣,您可以防止不必要的數據丟失。
內容
將文件從 Linux 命令行複製到多個目錄
我有一個名為的文本文件 ostechnix.txt
在我的主目錄中,我想將它複製到兩個不同的目錄: Downloads
什麼時候 Documents
多合一。
首先,讓我們看看如何使用它 find
什麼時候 cp
命令。
方法一:使用 find 和 cp 命令
可用於一次將文件複製到多個目錄 find
什麼時候 cp
命令。
這個 find
是用於在目錄層次結構中搜索文件的 Unix 和 Linux 命令以及用於復製文件和目錄的 cp 命令。
複製命名文件 ostechnix.txt
到達 ~/Downloads
什麼時候 ~/Documents
目錄使用 find
什麼時候 cp
命令,執行:
$ find ~/Downloads/ ~/Documents/ -maxdepth 0 -type d -exec cp ostechnix.txt {} ;
上述命令會將當前目錄中的 ostechnix.txt 文件複製到以下位置: ~/Downloads
什麼時候 ~/Documents
目錄。
如果沒有指定 '-maxdepth 0'
選項, ostechnix.txt
該文件將被複製到 ~/Downloads
, ~/Documents
目錄及其子目錄。所以不要忘記指定它。
如前所述,如果已存在同名文件(即 ostechnix.txt
) 在任何目標目錄中,上述命令只是簡單地覆蓋現有文件而無需確認。
如果您不想覆蓋現有文件,可以使用: -n
和標誌 cp
命令是:
$ find ~/Downloads/ ~/Documents/ -maxdepth 0 -type d -exec cp -n ostechnix.txt {} ;
如果目標文件已存在於目標位置,這將不會替換目標文件。
方法 2:使用 echo、xargs 和 cp 命令
將文件複製到多個位置的另一種方法是 echo
, xargs
什麼時候 cp
命令。
如你所知, cp
複製文件和目錄的命令,以及 xargs
命令用於從標準輸入構建和執行命令行。
使用以下命令將文件複製到多個目錄 echo
, xargs
什麼時候 cp
命令,執行:
$ echo ~/Downloads ~/Documents | xargs -n 1 cp ostechnix.txt
讓我們分解上面的命令,看看它是如何工作的。
通常來說,一般來說 echo
此命令將指定的字符串或文本打印到標準輸出。但在這種情況下,請使用管道 echo
命令 xargs
..這裡, echo
該命令將目錄路徑發送到 xargs
作為輸入。
xargs
要執行的命令 cp
運行兩次命令並在末尾添加每個目錄的路徑 cp
命令。
這個 xargs
該命令採用兩個參數(即目錄路徑)來自 echo
命令。這個 -n 1
選項 xargs
命令告訴 xargs
一次只添加其中一個參數。
同樣,上面的命令替換了現有的目標文件。如果您不想替換目標文件,請添加: -n
命令標誌:
$ echo ~/Downloads ~/Documents | xargs -n 1 cp -n ostechnix.txt
方法 3-使用 tee 命令
Tee
是一個 Unix 和 Linux 實用程序,它從標準輸入讀取並寫入標準輸出和文件。
讓我們複製 ostechnix.txt 將文件放在兩個不同的目錄中。 /home/sk/Downloads
什麼時候 /home/sk/Documents
..
為此,只需從終端運行以下命令:
$ tee /home/sk/Downloads/ostechnix.txt /home/sk/Documents/ostechnix.txt < /home/sk/ostechnix.txt
複製上面的命令 ostechnix.txt
主目錄中的文件 ~/Downloads
什麼時候 ~/Documents
目錄。
筆記 tee
此命令還將輸入寫入標準輸出。如果你不想 tee
執行此操作的命令只是將標準輸出重定向到 /dev/null
如下。
$ tee /home/sk/Downloads/ostechnix.txt /home/sk/Documents/ostechnix.txt < /home/sk/ostechnix.txt >/dev/null

我會再次警告你。如果已經存在同名文件(即 ostechnix.txt
) 在目標上,上述命令會覆蓋現有文件。
有關更多信息,請參見上述命令的手冊頁。
$ man cp
$ man find
$ man xargs
$ man echo
$ man tee
結論是
這是一種將文件從 Linux 命令行一次復製到多個目錄的方法。可能還有其他方法,但我發現這些命令非常簡單易用。
再次確保目標路徑正確,最重要的是,目標位置中不存在同名文件。
相關閱讀:
- 如何在 Linux 上將特定類型的文件從一個目錄複製到另一個目錄
- 複製特定文件類型,同時保留 Linux 上的目錄結構
- 同時復製文件和創建目標目錄
- 如何同時復製文件並更改所有權和權限
- 複製文件或目錄時如何保持所有權和文件權限相同
- 使用 Rsync 通過 SSH 恢復部分傳輸的文件
- 如何在 Linux 和 Unix 上通過網絡快速傳輸大文件
- AdvancedCopy – 為 Linux cp 和 mv 命令添加進度條
- 將文件內容複製到剪貼板而不顯示它
BASHcopyfilescp 命令 find 命令 LinuxLinuxbasicsLinux 命令 LinuxhowtoUnix