05_Linux目錄文件操作命令2_我的Linux之路

這一節我們繼續來學習Linux中對文件和目錄的操作命令

 

 

mkdir 創建目錄

mkdir (選項)(參數)

在Linux端可以使用mkdir來創建目錄,如果你沒有加其他的路徑名,那麼默認是在當前目錄下創建目錄,注意當文件夾存在時則提示不能創建

在這裏說一下創建文件夾其實和windowns管理一樣,要規劃好如何去佈局一個文件系統,在父目錄下可以再創建子目錄,每個目錄儘量要存放相同類型的文件,這樣更易於團隊的管理和使用

mkdir的選項

-Z:設置安全上下文,當使用SELinux時有效;
-m<目標屬性>或--mode<目標屬性>建立目錄的同時設置目錄的權限;
-p或--parents 若所要建立目錄的上層目錄目前尚未建立,則會一併建立上層目錄;
--version 顯示版本信息。

  你也可以直接通過--help來獲取選項

例如我下面創建一個文件夾

[root@localhost ~]# mkdir myfolder
[root@localhost ~]# ls
myfolder

  

創建一個文件夾並設置權限(權限暫時還沒有講到,只是瞭解一下)

[root@localhost ~]# mkdir -m 711 newFolder
[root@localhost ~]# ll
total 8
drwxr-xr-x. 2 root root 4096 Apr  9 16:49 myfolder
drwx--x--x. 2 root root 4096 Apr  9 16:53 newFolder

  權限是不是和之前創建的不一樣了

當然你也可以直接創建多個目錄(參數)

[root@localhost ~]# mkdir a b c
[root@localhost ~]# ls
a  b  c

 

創建包含子目錄的目錄(遞歸創建目錄)

遞歸創建目錄需要用到 -p選項

[root@localhost ~]# mkdir -p a/b/c
[root@localhost ~]# ls
a
[root@localhost ~]# cd a
[root@localhost a]# ls
b
[root@localhost a]# cd b
[root@localhost b]# ls
c
[root@localhost b]# cd c

  當前路徑創建了一個a,a中又創建了一個b,b中又創建了c

還可以通過列表來批量創建目錄

[root@localhost ~]# mkdir -p a/{1,2,3,4}
[root@localhost ~]# ls
a
[root@localhost ~]# cd a
[root@localhost a]# ls
1  2  3  4

  

 

 

tree

tree(選項)(參數)

 

tree命令以樹狀圖列出目錄的內容

下面是tree的所有選項

-a:顯示所有文件和目錄;
-A:使用ASNI繪圖字符顯示樹狀圖而非以ASCII字符組合;
-C:在文件和目錄清單加上色彩,便於區分各種類型;
-d:先是目錄名稱而非內容;
-D:列出文件或目錄的更改時間;
-f:在每個文件或目錄之前,顯示完整的相對路徑名稱;
-F:在執行文件,目錄,Socket,符號連接,管道名稱名稱,各自加上"*","/","@","|"號;
-g:列出文件或目錄的所屬羣組名稱,沒有對應的名稱時,則顯示羣組識別碼;
-i:不以階梯狀列出文件和目錄名稱;
-l:<範本樣式> 不顯示符號範本樣式的文件或目錄名稱;
-l:如遇到性質爲符號連接的目錄,直接列出該連接所指向的原始目錄;
-n:不在文件和目錄清單加上色彩;
-N:直接列出文件和目錄名稱,包括控制字符;
-p:列出權限標示;
-P:<範本樣式> 只顯示符合範本樣式的文件和目錄名稱;
-q:用“?”號取代控制字符,列出文件和目錄名稱;
-s:列出文件和目錄大小;
-t:用文件和目錄的更改時間排序;
-u:列出文件或目錄的擁有者名稱,沒有對應的名稱時,則顯示用戶識別碼;
-x:將範圍侷限在現行的文件系統中,若指定目錄下的某些子目錄,其存放於另一個文件系統上,則將該目錄予以排除在尋找範圍外。

  事實上用不上,只是參考

例如我們通過mkdir創建一個目錄體系,然後通過tree來查看

[root@localhost a]# mkdir -p a/{1,2,3,4} b/{1,2,3} c/{1,2} d/1
[root@localhost a]# ls
a  b  c  d
[root@localhost a]# tree
.
├── a
│   ├── 1
│   ├── 2
│   ├── 3
│   └── 4
├── b
│   ├── 1
│   ├── 2
│   └── 3
├── c
│   ├── 1
│   └── 2
└── d
    └── 1

14 directories, 0 files

  非常清晰的列出了文件的結構

注意:tree不僅會列出目錄,還會列出目錄中的所有文件

比如我在a下面的1文件夾創建了三個文件

[root@localhost a]# tree
.
├── a
│   ├── 1
│   │   ├── a.py
│   │   ├── b.py
│   │   └── c.py
│   ├── 2
│   ├── 3
│   └── 4
├── b
│   ├── 1
│   ├── 2
│   └── 3
├── c
│   ├── 1
│   └── 2
└── d
    └── 1

14 directories, 3 files

  

tree命令有很多用法,我這不一一解釋了,你可以按照上面的選項去嘗試一下

 

 

cp 複製命令

cp(選項)(參數)

cp命令用來將一個或多個源文件或者目錄複製到指定的目的文件或目錄。它可以將單個源文件複製成一個指定文件名的具體的文件或一個已經存在的目錄下。cp命令還支持同時複製多個文件,當一次複製多個文件時,目標文件參數必須是一個已經存在的目錄,否則將出現錯誤。

cp的一些選項

-a:此參數的效果和同時指定"-dpR"參數相同;
-d:當複製符號連接時,把目標文件或目錄也建立爲符號連接,並指向與源文件或目錄連接的原始文件或目錄;
-f:強行復制文件或目錄,不論目標文件或目錄是否已存在;
-i:覆蓋既有文件之前先詢問用戶;
-l:對源文件建立硬連接,而非複製文件;
-p:保留源文件或目錄的屬性;
-R/r:遞歸處理,將指定目錄下的所有文件與子目錄一併處理;
-s:對源文件建立符號連接,而非複製文件;
-u:使用這項參數後只會在源文件的更改時間較目標文件更新時或是名稱相互對應的目標文件並不存在時,才複製文件;
-S:在備份文件時,用指定的後綴“SUFFIX”代替文件的默認後綴;
-b:覆蓋已存在的文件目標前將目標文件備份;
-v:詳細顯示命令執行的操作。

  

cp的參數其實和mv有點類似,都是需要兩個參數,一個是源文件路徑,一個目標路徑,只是mv是移動,文件數量並沒有變,而cp命令是複製一個文件或目錄

下面我們通過一個例子來熟悉以下這個命令

把a.py複製到a文件夾中

[root@localhost ~]# ls
a  a.py
[root@localhost ~]# cp a.py a/
[root@localhost ~]# ls
a  a.py
[root@localhost ~]# cd a
[root@localhost a]# ls
a.py

  

注意,同mv命令一樣,肯定是會用到相對文件路徑的," . "代表當前文件路徑," .. "代表上一層文件路徑," ~ "代表家目錄

比如把文件複製到當前文件夾,並改名

[root@localhost ~]# ls
a.py
[root@localhost ~]# cp a.py b.py
[root@localhost ~]# ls
a.py  b.py

或是從其他文件路徑複製到當前路徑

[root@localhost b]# tree /root
/root
├── a
│   └── a.py
└── b

2 directories, 1 file
[root@localhost b]# cp ../a/a.py .
[root@localhost b]# tree /root
/root
├── a
│   └── a.py
└── b
    └── a.py

2 directories, 2 files

  

當要複製多個文件時或是一個目錄時,這時就要用到-r 遞歸處理

[root@localhost b]# pwd
/root/b
[root@localhost b]# tree /root
/root
├── a
│   ├── 1.py
│   ├── 2.py
│   └── 3.py
├── b
└── c

3 directories, 3 files
[root@localhost b]# cp -r ../a .
[root@localhost b]# tree /root
/root
├── a
│   ├── 1.py
│   ├── 2.py
│   └── 3.py
├── b
│   └── a
│       ├── 1.py
│       ├── 2.py
│       └── 3.py
└── c

  將a整個目錄都複製過來了

有時候我們在複製多個文件時,很有可能會遇到有文件重複,這時我們就可以使用 -i 選項交互式進行cp命令,也就是在覆蓋既有文件之前先詢問用戶

[root@localhost b]# tree /root
/root
├── a
│   ├── a.py
│   └── b.py
├── b
│   └── a.py
└── c

3 directories, 3 files
[root@localhost b]# cp -i  ../a/a.py .
cp: overwrite `./a.py'? y       #y代表的是yes

  

如果文件很多時,而且重名文件也很多,那麼你就可能需要不停的按y或yes,這樣很麻煩

cp aaa/* /bbb
複製目錄aaa下所有到/bbb目錄下,這時如果/bbb目錄下有和aaa同名的文件,需要按Y來確認並且會略過aaa目錄下的子目錄。

cp -r aaa/* /bbb
這次依然需要按Y來確認操作,但是沒有忽略子目錄。

cp -r -a aaa/* /bbb
依然需要按Y來確認操作,並且把aaa目錄以及子目錄和文件屬性也傳遞到了/bbb。

\cp -r -a aaa/* /bbb
成功,沒有提示按Y、傳遞了目錄屬性、沒有略過目錄。

  

 

  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章