終端基礎:在 Linux 中復制文件和目錄
復制文件是你經常執行的最基本但最重要的任務之一。
Linux 有一個專門的 cp
命令用于復制文件和目錄(文件夾)。
在終端基礎知識系列的這一部分中,你將學習在終端中復制文件和文件夾。
?? 回想一下,以下是你迄今為止在本終端基礎知識系列中所學到的內容:
讓我們繼續該系列的第七章。
在 Linux 命令行中復制文件
讓我向你展示一些復制文件的示例。
將文件復制到另一個目錄
要將一個文件復制到另一目錄,你所要做的就是遵循給定的命令語法:
cp 源文件 目標目錄
例如,在這里,我將名為 Hello.txt
的文件復制到名為 Tux
的目錄中:
copy file to another directory in linux command line
正如你所看到的,文件已成功復制到 Tux
目錄中。
復制文件但重命名
你可以選擇在復制文件時重命名該文件。只需為“目標文件”指定一個不同的名稱即可。
cp 源文件 改名的文件
作為參考,在這里,我將名為 Hello.txt
的文件復制到同一目錄,并將其重命名為 Renamed_Hello.txt
:
rename a file while copying in a same directory in linux terminal
為什么要這么做? 比如說,你必須編輯配置文件。一個好的做法是在編輯配置文件之前在同一位置對其進行備份。這樣,如果事情沒有按計劃進行,你可以恢復到舊配置。
將多個文件復制到另一個位置
要將多個文件復制到另一個目錄,請按以下方式執行命令:
cp File1 File2 File3 FileN Target_directory
在這里,我將多個文件復制到新位置。
copy multiple files using the cp command in linux
?? 當你復制多個文件時,僅使用
cp
命令無法重命名它們。
復制時處理重復文件
默認情況下,如果目標目錄中存在同名文件,cp
命令將覆蓋該文件。
為了避免覆蓋,你可以在 cp 命令中使用 -n
選項,它不會覆蓋現有文件:
cp -n 源文件 目標目錄
例如,在這里,我嘗試復制目標目錄中已有的兩個文件,并使用 -v
選項來展示該命令正在執行的操作:
cp -n -v itsFOSS.txt LHB.txt LU.txt ~/Tux
how not to override files while copying in linux using the cp command
交互式復制文件
但是,當你想要覆蓋某些文件,而某些文件應該保持不變時該怎么辦?
好吧,你可以使用 -i
選項在交互模式下使用 cp
命令,它每次都會詢問你是否應該覆蓋該文件:
cp -i 源文件 目標目錄
how to use cp command in interactive mode
??? 自己練習上述所有示例。你已經了解如何創建文件和文件夾,因此請重新創建所有內容。
在 Linux 命令行中復制目錄
mkdir
命令用于創建新目錄,rmdir
命令用于刪除(空)目錄。但沒有用于復制目錄的 cpdir
命令。
你必須使用相同的 cp
命令,但使用遞歸選項 -r
將目錄及其所有內容復制到另一個位置:
cp -r 源目錄 目標目錄
例如,在這里,我將名為 IF
的目錄復制到 LHB
:
how to copy a directory in linux command line
但它復制了整個目錄。??
那么,當你只想復制目錄內容而不是目錄本身時該怎么辦?
你可以執行以下操作:
僅復制目錄的內容(不是目錄)
要僅復制目錄的內容,而不復制目錄本身,請在源目錄名稱的末尾附加 /.
:
cp -r 源目錄/. 目標目錄
在這里,我想復制名為 IF
的目錄的內容,其中包含以下三個文件:
check the file contents of directory using the tree command
我將執行以下命令將 IF
目錄的文件內容復制到 LHB
:
cp -r IF/. LHB
copy the file contents of directory not a directory itself in linux command line
你還可以在此處使用 源目錄/*
。
復制多個目錄
要復制多個目錄,你必須按以下方式執行命令:
cp -r 目錄1 目錄2 目錄3 目錄N 目標目錄
例如,在這里,我將兩個名為 IF
和 LU
的目錄復制到 LHB
:
cp -r IF LU ~/LHB
copy multiple directories using the cp command in linux command line
當你想要從多個目錄復制文件但不復制目錄本身時,你可以執行相同的操作:
cp -r 目錄1/. 目錄2/. 目錄3/. 目錄N/. 目標目錄
copy files from multiple directories but not directories their self using the cp command
??? 你還可以像重命名文件一樣重命名目錄。
測試你的知識
現在,讓我們看看你對到目前為止所學到的知識還記得多少。
- 創建一個名為
copy_practice
的目錄。 - 將文件
/etc/services
復制到這個新創建的文件夾。 - 在此目錄下創建一個名為
secrets
的文件夾,并將文件/etc/passwd
和/etc/services
復制到其中。 - 將
copy_practice
中的services
文件復制到secrets
文件夾中,但不要覆蓋它。 - 將
secrets
文件夾復制到你的主目錄。 - 刪除
secrets
和copy_practice
目錄。
這會給你一些練習。
到目前為止進展順利。你已經學到了很多東西。在下一章中,你將了解如何使用 mv
命令移動文件和文件夾。