Linux文件拷貝(6)


本篇介紹文件拷貝操作,主要講兩個命令:

命令 對應英文 作用
tree[目錄名] tree 以樹狀圖列出文件目錄結構
cp 源文件 目標文件 copy 復制文件或者目錄

 

 

tree

tree命令可以將一個目錄結構以樹狀圖的形式展示出來,便於我們了解目錄層級關系。在進行文件操作前,這個命令有時很有用。

在這之前,需要注意的是,你的Linux環境可能沒有這個命令,比如我的centos服務器環境就沒有,這時你可以自己安裝這個命令,輸入以下命令:

yum install tree

直接輸入tree命令可以查看當前所在目錄的層級關系:

//在a目錄下輸入
tree


//結果
.
└── b
    └── c
        └── 123.txt

也可以指定目錄名,比如回到a目錄上層,再輸入命令:

tree a

//結果
a
└── b
    └── c
        └── 123.txt

注意兩次展示結果的區別,一個是從 . 開始,表當前目錄,一個是從 a 開始,表a目錄下。

有時候一個文件夾里內容太多,如果把全部層級展示出來,結構可能太長了,這時我們只展示目錄就好,需要用到選項-d,使用它就可以只展示目錄。

還是拿上面的a目錄演示,我在b目錄里再建一個文件:

touch a/b/test.txt
//這種寫法是可以的

再看一下a目錄結構:

tree a

//結果
a
└── b
    ├── c
    │   └── 123.txt
    └── test.txt

現在使用 -d 選項:

tree -d a

//結果
a
└── b
    └── c
        └── 123.txt

此時發現,b目錄里的文件沒顯示了,但是c目錄里還顯示了。關於這個,也可能是我的環境原因,有些命令包括之前已經提到的命令,在不同的Linux環境下可能表現有些許差異(我自己覺得),但功能都一樣,自己多試試吧。

 

cp

拷貝命令也是很簡單,它的結構是:

cp 源文件路徑 目標文件路徑

比如我的根目錄下,有一個readme.txt文件,我想將它復制到home目錄下,並重命名為test.txt。如果當前目錄就是根目錄,那么輸入:

cp readme.txt ~/test.txt
//~表示home目錄

此時在home目錄下,就有了test.txt文件。這時,如果你不想重命名,你可能這么寫:

cp readme.txt ~/readme.txt

但其實,我們可以更簡單點:

cp readme.txt ~

這樣也是可以的。所以記住了,如果不想重命名復制的文件,直接寫目標文件的路徑就好。

 

cp命令的幾個選項

cp命令的選項也有好幾個,這里主要說三個:

命令 含義
-f 對於已經存在的目標文件直接覆蓋,不會提示
-i 覆蓋文件前提示
-r 拷貝一個目錄,目錄下的所有文件及目錄都拷貝

看含義就知道什么意思了,先看 -f 選項,如果我們不加這個選項,然后復制一個文件名已經存在的文件:

//  home目錄下已經有readme.txt這個文件了,然后再復制一份根目錄的readme.txt

cp /readme.txt .

結果:

cp: overwrite ‘./readme.txt’?

顯然我們需要根據提示選擇是否需要覆蓋。那如果我們不需要提示的話,就可以使用 -f 這個選項了:

cp -f /readme.txt .

結果:

cp: overwrite ‘./readme.txt’?

 

what? 不是不會提示了嗎,怎么還有提示?這個選項沒效果?剛開始我也懷疑是我的環境原因,后來上網查詢才了解到,默認cp命令是有別名(alias cp='cp -i')的,無法強制覆蓋,即使你用 -f 參數也無法強制覆蓋文件。此時如果想看到效果,可以臨時取消cp的alias:

unalias cp

再輸入上述復制命令就不會有提示了。不過顯然在平時使用過程中,我們不建議使用-f選項,連cp默認都是使用了 -i 選項,這樣做的好處是防止誤操作啊,所有我們應該盡量加上 -i 選項,防止沒必要的損失。

 

如果我們想拷貝一個目錄,那么必須加上 -r 這個選項,我在根目錄下新建了一個test目錄:

tree test

//結果
test
└── a
    ├── 123.txt
    └── b

現在就在當前目錄拷貝一份,並重命名為test1:

cp test ./test1

//結果
cp: omitting directory ‘test’

我們再加上 -f 選項:

cp -r test ./test1

這時沒有提示了,沒有提示就是最好的提示,可以看到當前目錄下多了一個test1目錄。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM