在 Linux 上覆制和重新命名檔案
cp 和 mv 之外,在 Linux 上有更多的複製和重新命名檔案的命令。試試這些命令或許會驚豔到你,並能節省一些時間。
Linux 使用者數十年來一直在使用簡單的 cp
和 mv
命令來複制和重新命名檔案。這些命令是我們大多數人首先學到的,每天可能有數百萬人在使用它們。但是還有其他技術、方便的方法和另外的命令,這些提供了一些獨特的選項。
首先,我們來思考為什麼你想要複製一個檔案。你可能需要在另一個位置使用同一個檔案,或者因為你要編輯該檔案而需要一個副本,並且希望確保備有便利的備份以防萬一需要恢復原始檔案。這樣做的顯而易見的方式是使用像 cp myfile myfile-orig
這樣的命令。
但是,如果你想複製大量的檔案,那麼這個策略可能就會變得很老。更好的選擇是:
- 在開始編輯之前,使用
tar
建立所有要備份的檔案的存檔。 - 使用
for
迴圈來使備份副本更容易。
使用 tar
的方式很簡單。對於當前目錄中的所有檔案,你可以使用如下命令:
$ tar cf myfiles.tar *
對於一組可以用模式標識的檔案,可以使用如下命令:
$ tar cf myfiles.tar *.txt
在每種情況下,最終都會生成一個 myfiles.tar
檔案,其中包含目錄中的所有檔案或副檔名為 .txt 的所有檔案。
一個簡單的迴圈將允許你使用修改後的名稱來製作備份副本:
$ for file in *
> do
> cp $file $file-orig
> done
當你備份單個檔案並且該檔案恰好有一個長名稱時,可以依靠使用 tab
來補全檔名(在輸入足夠的字母以便唯一標識該檔案後點選 Tab
鍵)並使用像這樣的語法將 -orig
附加到副本的名字後。
$ cp file-with-a-very-long-name{,-orig}
然後你有一個 file-with-a-very-long-name
和一個 file-with-a-very-long-name-orig
。
在 Linux 上重新命名檔案
重新命名檔案的傳統方法是使用 mv
命令。該命令將檔案移動到不同的目錄,或原地更改其名稱,或者同時執行這兩個操作。
$ mv myfile /tmp
$ mv myfile notmyfile
$ mv myfile /tmp/notmyfile
但我們也有 rename
命令來做重新命名。使用 rename
命令的竅門是習慣它的語法,但是如果你瞭解一些 Perl,你可能發現它並不棘手。
有個非常有用的例子。假設你想重新命名一個目錄中的檔案,將所有的大寫字母替換為小寫字母。一般來說,你在 Unix 或 Linux 系統上找不到大量大寫字母的檔案,但你可以有。這裡有一個簡單的方法來重新命名它們,而不必為它們中的每一個使用 mv
命令。 /A-Z/a-z/
告訴 rename
命令將範圍 A-Z
中的任何字母更改為 a-z
中的相應字母。
$ ls
Agenda Group.JPG MyFile
$ rename 'y/A-Z/a-z/' *
$ ls
agenda group.jpg myfile
你也可以使用 rename
來刪除副檔名。也許你厭倦了看到帶有 .txt 副檔名的文字檔案。簡單刪除這些副檔名 —— 用一個命令。
$ ls
agenda.txt notes.txt weekly.txt
$ rename 's/.txt//' *
$ ls
agenda notes weekly
現在讓我們想象一下,你改變了心意,並希望把這些副檔名改回來。沒問題。只需修改命令。竅門是理解第一個斜槓前的 s
意味著“替代”。前兩個斜線之間的內容是我們想要改變的東西,第二個斜線和第三個斜線之間是改變後的東西。所以,$
表示檔名的結尾,我們將它改為 .txt
。
$ ls
agenda notes weekly
$ rename 's/$/.txt/' *
$ ls
agenda.txt notes.txt weekly.txt
你也可以更改檔名的其他部分。牢記 s/舊內容/新內容/
規則。
$ ls
draft-minutes-2018-03 draft-minutes-2018-04 draft-minutes-2018-05
$ rename 's/draft/approved/' *minutes*
$ ls
approved-minutes-2018-03 approved-minutes-2018-04 approved-minutes-2018-05
在上面的例子中注意到,當我們在 s/old/new/
中使用 s
時,我們用另一個名稱替換名稱的一部分。當我們使用 y
時,我們就是直譯(將字元從一個範圍替換為另一個範圍)。
總結
現在有很多複製和重新命名檔案的方法。我希望其中的一些會讓你在使用命令列時更愉快。
via: https://www.networkworld.com/article/3276349/linux/copying-and-renaming-files-on-linux.html
作者:Sandra Henry-Stocker 選題:lujun9972 譯者:geekpi 校對:wxy
本文由 LCTT 原創編譯,Linux中國 榮譽推出
相關文章
- 如何在 Linux 上重新命名一組檔案Linux
- 如何在 Linux 上覆制檔案/資料夾到遠端系統?Linux
- 在 Linux 上以樹狀檢視檔案和程式Linux
- Xshell在Windows和Linux間檔案的上傳和下載WindowsLinux
- 如何在 Linux 上一次性批量重新命名一組檔案?Linux
- 在 Linux 中如何歸檔檔案和目錄Linux
- git如何上傳所有的新檔案 gitlab如何上傳所有的新檔案 git本地覆蓋伺服器 強制本地覆蓋伺服器...Gitlab伺服器
- Linux上傳檔案Linux
- 簡單介紹在 Linux 上建立和使用交換檔案的方法Linux
- 03-Java框架FTPClient 使用rename()移動檔案和檔案重新命名Java框架FTPclient
- linux的刪除檔案命令和強制刪除命令Linux
- 如何在 Linux 中一次重新命名多個檔案Linux
- 重新命名一千個檔案要多久? Name Mangler 快速為大量檔案重新命名
- Linux——拖拽上傳檔案Linux
- 如何在 Linux 上建立和使用交換檔案Linux
- 在Linux中,如何建立、刪除和修改檔案?Linux
- linux批次find查詢檔案並批次替換覆蓋該檔案Linux
- 12c pdb線上移動資料檔案或者重新命名資料檔案
- 在Linux上實現將檔案隱藏到影像中Linux
- 在 Linux 上安全傳輸檔案的 14 SCP 命令示例Linux
- 批次檔案重新命名的方法
- Git強制將本地專案覆蓋線上倉庫Git
- 如何使用 Find 和 Locate 在 Linux 中搜尋檔案Linux
- 單個檔案上傳和批量檔案上傳
- NodeJS+formidable實現檔案上傳加自動重新命名NodeJSORM
- linux大檔案上傳(nc)Linux
- day58:Linux:BashShell&linux檔案管理&linux檔案下載上傳Linux
- Linux-檔案寫入和檔案同步Linux
- Linux伺服器上傳檔案傳送檔案Linux伺服器
- 如何在蘋果Mac滑鼠或觸控板上覆制和貼上?蘋果Mac
- 在Linux中,如何管理和最佳化日誌檔案?Linux
- 在Linux中,如何將二進位制檔案新增到 $PATH 變數中?Linux變數
- 精通 Linux 上的檔案搜尋Linux
- 不能重新命名檔案及不能刪除檔案和資料夾許可權設定
- 在 Linux 中如何移動檔案Linux
- 在蘋果Mac上如何查詢和刪除檔案?蘋果Mac
- 在 RESTful Web 服務中下載和上傳檔案 - mscharhagRESTWeb
- 在Linux中,如何建立、移動和刪除檔案和資料夾?Linux