作為命令行新手,您可能會覺得,您快速用來通過圖形界面執行的相同任務可能會要求在命令行中輸入大量命令。 但是,當您通過學習、練習和體驗慢慢成為命令行高級用戶時,您會開始注意到通過一些非常簡單但有用的快捷方式可以非常快速地執行相同的任務。 在這篇文章中,我們將描述一種這樣的情況,它表面上可能需要很多命令才能運行,但實際上,一個簡單的命令就可以為您完成任務。
有時,我們需要將單個文件複製到系統上的多個位置。 那麼這是否意味著,我們需要多次使用 cp 命令? 答案是不! 讓我們進一步閱讀以找到解決方案。
本文中提到的命令已在 Ubuntu 18.04 LTS 系統上運行。
如何將一個文件同時復製到多個位置
我們都知道 cp 命令如何通過以下語法讓我們將文件複製到新位置:
$ cp ~[/location/sourcefile] ~[/destinationfolder]
在這裡,我將示例文本文件從我的下載文件夾複製到文檔文件夾:
現在,如果我想將同一個文件複製到兩個不同的位置而不是一個位置,可能的解決方案似乎是兩次使用 cp 命令。
在這裡,我使用 cp 命令兩次將示例文本文件從下載文件夾複製到公共和桌面文件夾:
使用 cp 命令兩次將同一個文件複製到兩個位置似乎仍然合乎邏輯,但讓我們假設我們必須將文件複製到三個、五個甚至更多位置。 以下是單個命令如何實現此目的。
句法:
$ echo [destination1] [desctination2] [destiantion3]..... | xargs -n 1 cp [/location/sourcefile]
在下面的 example,我將使用此命令將示例文本文件從我的下載文件夾同時復製到三個不同的文件夾:
我們在一行中使用了 echo 命令和 xargs 命令來達到我們的目的。
命令如何工作?
echo 命令將輸出打印到屏幕上,但在我們的 example,我們使用它通過 | 將輸出提供給 xargs 命令。 象徵。 xargs 命令將從 echo 命令獲取輸入三次並執行三次 cp 操作,將示例文本複製到三個不同的位置。 n 計數告訴 cp 命令一次接受一個參數。
請注意,此命令將覆蓋目標文件夾中已存在的同名文件。 因此,始終備份重要文件是一種很好的做法。 我們用於在覆蓋操作之前詢問的 i 選項不適用於 xargs 命令。
但是,該命令的一種用法可以幫助您避免覆蓋目標文件夾中已存在的文件; 源文件前的 n 選項。
句法:
$ echo [destination1] [desctination2] [destiantion3]..... | xargs -n 1 cp n [/lcoation/sourcefile]
例子:
當您將非常大的文件從一個位置複製到另一個位置時,n 選項非常有用,尤其是通過網絡。 通過這種方式,您可以避免在復制然後替換現有文件時浪費資源。
運行本教程後,您離成為命令行大師又近了一步。 現在您無需編寫多個命令來執行將一個文件複製到不同位置的簡單任務。 正如我們所描述的,您可以合併 echo 和 xargs 命令,以便為您的問題提供一個命令解決方案。