Linux 用戶數(shù)十年來一直在使用簡(jiǎn)單的cp和mv命令來復(fù)制和重命名文件。這些命令是我們大多數(shù)人首先學(xué)到的,每天可能有數(shù)百萬人在使用它們。但是還有其他技術(shù)、方便的方法和另外的命令,這些提供了一些獨(dú)特的選項(xiàng)。
首先,我們來思考為什么你想要復(fù)制一個(gè)文件。你可能需要在另一個(gè)位置使用同一個(gè)文件,或者因?yàn)槟阋庉嬙撐募枰粋€(gè)副本,并且希望確保備有便利的備份以防萬一需要恢復(fù)原始文件。這樣做的顯而易見的方式是使用像cp myfile myfile-orig這樣的命令。
但是,如果你想復(fù)制大量的文件,那么這個(gè)策略可能就會(huì)變得很老。更好的選擇是:
在開始編輯之前,使用tar創(chuàng)建所有要備份的文件的存檔。
使用for循環(huán)來使備份副本更容易。
使用tar的方式很簡(jiǎn)單。對(duì)于當(dāng)前目錄中的所有文件,你可以使用如下命令:
$tar cf myfiles.tar *
對(duì)于一組可以用模式標(biāo)識(shí)的文件,可以使用如下命令:
$tar cf myfiles.tar *.txt
在每種情況下,最終都會(huì)生成一個(gè) myfiles.tar 文件,其中包含目錄中的所有文件或擴(kuò)展名為 .txt 的所有文件。
一個(gè)簡(jiǎn)單的循環(huán)將允許你使用修改后的名稱來制作備份副本:
$forfile in *
> do
> cp$file$file-orig
> done
當(dāng)你備份單個(gè)文件并且該文件恰好有一個(gè)長(zhǎng)名稱時(shí),可以依靠使用 tab 來補(bǔ)全文件名(在輸入足夠的字母以便唯一標(biāo)識(shí)該文件后點(diǎn)擊 Tab 鍵)并使用像這樣的語法將 -orig 附加到副本的名字后。
$cpfile-with-a-very-long-name{,-orig}
然后你有一個(gè) file-with-a-very-long-name 和一個(gè) file-with-a-very-long-name-orig。
在 Linux 上重命名文件
重命名文件的傳統(tǒng)方法是使用 mv 命令。該命令將文件移動(dòng)到不同的目錄,或原地更改其名稱,或者同時(shí)執(zhí)行這兩個(gè)操作。
$mv myfile /tmp
$mv myfile notmyfile
$mv myfile /tmp/notmyfile
但我們也有 rename 命令來做重命名。使用 rename 命令的竅門是習(xí)慣它的語法,但是如果你了解一些 Perl,你可能發(fā)現(xiàn)它并不棘手。
有個(gè)非常有用的例子。假設(shè)你想重新命名一個(gè)目錄中的文件,將所有的大寫字母替換為小寫字母。一般來說,你在 Unix 或 Linux 系統(tǒng)上找不到大量大寫字母的文件,但你可以有。這里有一個(gè)簡(jiǎn)單的方法來重命名它們,而不必為它們中的每一個(gè)使用 mv 命令。 /A-Z/a-z/ 告訴 rename 命令將范圍 A-Z 中的任何字母更改為 a-z 中的相應(yīng)字母。
$ls
Agenda Group.JPG MyFile
$rename'y/A-Z/a-z/' *
$ls
agenda group.jpg myfile
你也可以使用 rename 來刪除文件擴(kuò)展名。也許你厭倦了看到帶有 .txt 擴(kuò)展名的文本文件。簡(jiǎn)單刪除這些擴(kuò)展名 —— 用一個(gè)命令。
$ls
agenda.txt notes.txt weekly.txt
$rename's/.txt//' *
$ls
agenda notes weekly
現(xiàn)在讓我們想象一下,你改變了心意,并希望把這些擴(kuò)展名改回來。沒問題。只需修改命令。竅門是理解第一個(gè)斜杠前的 s 意味著“替代”。前兩個(gè)斜線之間的內(nèi)容是我們想要改變的東西,第二個(gè)斜線和第三個(gè)斜線之間是改變后的東西。所以,$ 表示文件名的結(jié)尾,我們將它改為 .txt。
$ls
agenda notes weekly
$rename's/$/.txt/' *
$ls
agenda.txt notes.txt weekly.txt
你也可以更改文件名的其他部分。牢記 s/舊內(nèi)容/新內(nèi)容/ 規(guī)則。
$ls
draft-minutes-2018-03draft-minutes-2018-04draft-minutes-2018-05
$rename's/draft/approved/' *minutes*
$ls
approved-minutes-2018-03approved-minutes-2018-04approved-minutes-2018-05
在上面的例子中注意到,當(dāng)我們?cè)?s/old/new/ 中使用 s 時(shí),我們用另一個(gè)名稱替換名稱的一部分。當(dāng)我們使用 y 時(shí),我們就是直譯(將字符從一個(gè)范圍替換為另一個(gè)范圍)。
總結(jié)
現(xiàn)在有很多復(fù)制和重命名文件的方法。我希望其中的一些會(huì)讓你在使用命令行時(shí)更愉快。
-
Linux
+關(guān)注
關(guān)注
87文章
11207瀏覽量
208721
原文標(biāo)題:在 Linux 上復(fù)制和重命名文件
文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論