歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux技術

linux文件目錄操作的相關命令

linux文件目錄操作的相關命令

mkdir rmdir tree touch stat cp mv rm

mkdir

功能說明:建立空目錄

語 法:mkdir [-p][--help][--v][-m <目錄屬性>][目錄名稱]

補充說明:mkdir可建立目錄並同時設置目錄的權限。

選項:

-m<目錄屬性> 建立目錄時同時設置目錄的權限。
[root@VM_18_121_centos ~]# mkdir -m 775 qin
[root@VM_18_121_centos ~]# ll
drwxrwxr-x  2 root root 4096 Jul 29 10:45 qin
-p或--parents 若所要建立目錄的上層目錄目前尚未建立,則會一並建立上層目錄
[root@VM_18_121_centos ~]# mkdir -p ./1/12/15/258
root@VM_18_121_centos ~]# tree 1/
1/
`-- 12
    `-- 15
        `-- 258

3 directories, 0 files

一般用法mkdir 文件名

rmdir (remove directory)

功能說明:刪除目錄。

語  法:rmdir [-p][--help][目錄...]

補充說明:當有空目錄要刪除時,可使用rmdir指令。

選 項:

-p 刪除指定目錄後,若該目錄的上層目錄已變成空目錄,則將其一並刪除。
root@VM_18_121_centos ~]# tree 1/
1/
`-- 12
    `-- 15
        `-- 258
[root@VM_18_121_centos ~]# rmdir -p 1/12/15/258/
[root@VM_18_121_centos ~]# tree 1
1 [error opening dir]

0 directories, 0 files
注意:只能刪除空目錄

tree

功能說明:以樹狀圖列出目錄的內容。

語  法:tree [-aACdDfFgilnNpqstux][-I <范本樣式>][-P <范本樣式>][目錄...]

補充說明:執行tree指令,它會列出指定目錄下的所有文件,包括子目錄裡的文件。

選 項:

-L level:指定顯示的層級:例如-L 2 顯示兩層層級-C 在文件和目錄清單加上色彩,便於區分各種類型。

-d 只顯示目錄名稱而非內容。-f 在每個文件或目錄之前,顯示完整的相對路徑名稱。

-D 列出文件或目錄的更改時間。

-p 列出權限標示。

-s 列出文件或目錄大小。

-t 用文件和目錄的更改時間排序。

[root@VM_18_121_centos /]#  tree -CdL 1
    .
    |-bin -> usr/bin
    |-boot
    |-data
    |-dev
    |-etc
    |-home
    |-lib -> usr/lib
    [root@VM_18_121_centos /]# ll
    total 68
    lrwxrwxrwx.  1 root root     7 Apr 21 15:00 bin -> usr/bin
    dr-xr-xr-x.  4 root root  4096 Jul 27 11:34 boot
    drwxr-xr-x   2 root root  4096 Apr 21 22:18 data
    drwxr-xr-x  18 root root  2860 Jul 27 11:33 dev
    -rw-r--r--   1 root root    39 Jul 27 11:41 qiu

stat

功能說明:顯示inode內容。

語  法:stat [文件或目錄]

補充說明:stat以文字的格式來顯示inode的內容。(顯示文件源數據)

[root@localhost ~]# stat acd 
      文件:"acd"
      大小:12         塊:8          IO 塊:4096   普通文件
    設備:803h/2051d   Inode:141620596   硬鏈接:1
    權限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
    環境:unconfined_u:object_r:admin_home_t:s0
    最近訪問:2016-07-28 14:18:22.969424559 +0800
    最近更改:2016-07-28 14:18:00.772595552 +0800
    最近改動:2016-07-28 14:18:00.772595552 +0800
    創建時間:-
更改是指文件內數據的改變,改動是指文件元數據的改變

touch

功能說明:新建文件,改變文件或目錄時間戳。

語  法:touch [-acfm][-d <日期時間>][-r <參考文件或目錄>][-t <日期時間>][--help]   [--version][文件或目錄...] 或 touch [-acfm][--help][--version][日期時間][文件或目錄...]

補充說明:使用touch指令可更改文件或目錄的日期時間,包括存取時間和更改時間。

選 項:

-a或--time=atime或--time=access或--time=use  只更改存取時間。

-c或--no-create  指定的文件路徑不存在時不建立任何文件。

-d <時間日期>  使用指定的日期時間,而非現在的時間。

-m或--time=mtime或--time=modify  只更改變動時間。

-r<參考文件或目錄>  把指定文件或目錄的日期時間,統統設成和參考文件或目錄的日期時間相同。

-t<日期時間>  使用指定的日期時間,而非現在的時間。格式 [[CC]YY]MMDDhhmm[.ss]第一種用法:直接創建指定文件

[root@localhost ~]# touch aaa
    [root@localhost ~]# ll aaa
    -rw-r--r--. 1 root root 0 7月  29 12:35 aaa
第二種用法:如果文件存在則不改變文件內容,只改變文件的所有時間戳為當前時間
[root@localhost ~]# stat acd
      文件:"acd"
      大小:8          塊:8          IO 塊:4096   普通文件
    設備:803h/2051d   Inode:141620596   硬鏈接:1
    權限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
    環境:unconfined_u:object_r:admin_home_t:s0
    最近訪問:2016-07-29 12:29:07.347575849 +0800
    最近更改:2016-07-29 12:29:07.347575849 +0800
    最近改動:2016-07-29 12:29:07.347575849 +0800
    創建時間:-
    [root@localhost ~]# touch acd 
    [root@localhost ~]# stat acd
      文件:"acd"
      大小:8          塊:8          IO 塊:4096   普通文件
    設備:803h/2051d   Inode:141620596   硬鏈接:1
    權限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
    環境:unconfined_u:object_r:admin_home_t:s0
    最近訪問:2016-07-29 12:30:20.045015827 +0800
    最近更改:2016-07-29 12:30:20.045015827 +0800
    最近改動:2016-07-29 12:30:20.045015827 +0800
    創建時間:-
    [root@localhost ~]# cat acd 
    sdasdsa
不帶任何參數

2.修改指定的時間戳為當前時間 -a和-m

[root@localhost ~]# touch -m acd 
    [root@localhost ~]# stat acd
      文件:"acd"
      大小:8          塊:8          IO 塊:4096   普通文件
    設備:803h/2051d   Inode:141620596   硬鏈接:1
    權限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
    環境:unconfined_u:object_r:admin_home_t:s0
    最近訪問:2016-07-29 12:46:03.353749084 +0800
    最近更改:2016-07-29 12:46:55.286349022 +0800
    最近改動:2016-07-29 12:46:55.286349022 +0800
    創建時間:-
    [root@localhost ~]# touch -a acd
    [root@localhost ~]# stat acd 
      文件:"acd"
      大小:8          塊:8          IO 塊:4096   普通文件
    設備:803h/2051d   Inode:141620596   硬鏈接:1
    權限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
    環境:unconfined_u:object_r:admin_home_t:s0
    最近訪問:2016-07-29 12:49:23.479207425 +0800
    最近更改:2016-07-29 12:46:55.286349022 +0800
    最近改動:2016-07-29 12:49:23.479207425 +0800
    創建時間:-
3.修改文件的時間戳為指定時間 -t(可以和-a -m結合使用)-t 選項語法組成 : [[CC]YY]MMDDhhmm [.SS] CC - 年份的前兩位 YY - 年份的後兩位 MM - 月份 [01-12] DD - 日期 [01-31] hh - 時 [00-23] mm - 分 [00-59] SS - 秒 [00-61]
[root@localhost ~]# touch -at 100001120958.27 acd 
    [root@localhost ~]# stat acd 
      文件:"acd"
      大小:8          塊:8          IO 塊:4096   普通文件
    設備:803h/2051d   Inode:141620596   硬鏈接:1
    權限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
    環境:unconfined_u:object_r:admin_home_t:s0
    最近訪問:1000-01-12 09:58:27.000000000 +0800
    最近更改:2016-07-29 12:46:55.286349022 +0800
    最近改動:2016-07-29 12:51:40.923148630 +0800
    創建時間:-
4.以某個文件為參考文件或目錄修改另一個文件 -r
[root@localhost ~]# stat aaa
      文件:"aaa"
      大小:0          塊:0          IO 塊:4096   普通空文件
    設備:803h/2051d   Inode:141620555   硬鏈接:1
    權限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
    環境:unconfined_u:object_r:admin_home_t:s0
    最近訪問:2016-07-29 12:35:52.925451496 +0800
    最近更改:2016-07-29 12:35:52.925451496 +0800
    最近改動:2016-07-29 12:35:52.925451496 +0800
    創建時間:-
    [root@localhost ~]# stat aaa
      文件:"aaa"
      大小:0          塊:0          IO 塊:4096   普通空文件
    設備:803h/2051d   Inode:141620555   硬鏈接:1
    權限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
    環境:unconfined_u:object_r:admin_home_t:s0
    最近訪問:1000-01-12 09:58:27.000000000 +0800
    最近更改:2016-07-29 12:46:55.286349022 +0800
    最近改動:2016-07-29 13:03:42.748588076 +0800
    創建時間:-
特殊touch支持通配符?如果原本有aaa acd asd三個文件若用touch a??不會創建名a??的文件,而是把aaa acd asd 這三個文件的時間戳刷新,但如果用touch a????則會因為匹配不到文件而創建一個a????的文件
-rw-r--r--. 1 root root    0 7月  29 12:35 aaa
    -rw-r--r--. 1 root root    8 7月  29 12:46 acd
    -rw-r--r--. 1 root root    0 7月  28 14:16 asd
    [root@localhost ~]# touch a??
    [root@localhost ~]# ll
    總用量 20
    -rw-r--r--. 1 root root    0 7月  29 13:06 aaa
    -rw-r--r--. 1 root root    8 7月  29 13:06 acd
    -rw-r--r--. 1 root root    0 7月  29 13:06 asd
    [root@localhost ~]# touch a????
    [root@localhost ~]# ll
    總用量 20
    -rw-r--r--. 1 root root    0 7月  29 12:16 12345678
    -rw-r--r--. 1 root root    0 7月  29 12:15 1234567890
    -rw-r--r--. 1 root root    0 7月  29 12:44 201401120958.27
    -rw-r--r--. 1 root root    0 7月  29 13:10 a????
    -rw-r--r--. 1 root root    0 7月  29 13:06 aaa
    -rw-r--r--. 1 root root    8 7月  29 13:06 acd
    -rw-------. 1 root root 1521 7月  20 00:53 anaconda-ks.cfg
    -rw-r--r--. 1 root root    0 7月  29 13:06 asd

cp (copy)

cp也可以改名文件復制的原理,首先在目標地址創建一個空文件,然後把要復制的文件內容以數據流的方式流入這個空文件,使這個文件越來越大最後一樣。復制的只是文件裡面的數據,元數據不發生改變。

功能說明:復制文件或目錄。

語  法:cp [-abdfilpPrRsuvx][-S <備份字尾字符串>][-V <備份方式>[源文件或目錄][目標文件或目錄] [目的目錄]

補充說明:cp指令用在復制文件或目錄,如同時指定兩個以上的文件或目錄,且最後的目的地是一個已經存在的目錄,則它會把前面指定的所有文件或目錄復制到該目錄中。若同時指定多個文件或目錄,而最後的目的地並非是一個已存在的目錄,則會出現錯誤信息

選 項:

-d或--no-dereference  當復制符號連接時,把目標文件或目錄也建立為符號連接,並指向與源文件或目錄連接的原始文件或目錄-f或--force  強行復制文件或目錄,不論目標文件或目錄是否已存在。

-i或--interactive  覆蓋既有文件之前先詢問用戶。

-p或--preserve  保留源文件或目錄的屬性。

-v或--verbose  顯示指令執行過程。

-r 或-R 遞歸處理,將指定目錄下的文件與子目錄一並處理。

-a或--archive  此參數的效果和同時指定"-dpR"參數相同。

1.無參數復制

直接復制:只能復制文件到指定目錄
    [root@localhost etc]# cp /etc/issue /testdir/
    [root@localhost etc]# ll /testdir/
    總用量 8
    -rw-r--r--. 1 root root 23 7月  29 13:33 issue
    -rw-r--r--. 1 root root 44 7月  29 13:27 system-release

復制軟連接,會把直接復制軟連接所指向的文件,並且改名為軟連接的名字
    [root@localhost etc]# cp system-release /testdir/
    [root@localhost etc]# ll /testdir/
    總用量 4
    -rw-r--r--. 1 root root 44 7月  29 13:27 system-release
    [root@localhost etc]# ll /etc/system-release
    lrwxrwxrwx. 1 root root 14 7月  20 00:09 /etc/system-release -> centos-release
    [root@localhost etc]# ll /etc/centos-release
    -rw-r--r--. 1 root root 44 7月  26 09:46 /etc/centos-release
2.復制目錄 -r
[root@localhost etc]# cp -r /etc/yum /testdir/
    [root@localhost etc]# ll /testdir/
    總用量 12
    -rw-r--r--. 1 root root   23 7月  29 13:33 issue
    -rw-r--r--. 1 root root   44 7月  29 13:27 system-release
    drwxr-xr-x. 6 root root 4096 7月  29 13:39 yum
3.-d或--no-dereference  當復制符號連接時,把目標文件或目錄也建立為符號連接,並指向與源文件或目錄連接的原始文件或目錄
[root@localhost etc]# cp -d /etc/system-release /testdir/
    [root@localhost etc]# ll /testdir/
    總用量 0
    lrwxrwxrwx. 1 root root 14 7月  29 13:43 system-release -> centos-release  //只復制了軟連接文件
4.其他

mv (move)

功能說明:移動或更名現有的文件或目錄。

語  法:mv [-bfiuv][源文件或目錄][目標文件或目錄]

補充說明:mv可移動文件或目錄,或是更改文件或目錄的名稱。

選 項:

-b或--backup  若需覆蓋文件,則覆蓋前先行備份。f 或--force  若目標文件或目錄與現有的文件或目錄重復,則直接覆蓋現有的文 件或目錄。

i 或--interactive  覆蓋前先行詢問用戶。

-v或--verbose  執行時顯示詳細的信息。

用法:1.移動某文件至指定目錄

[root@localhost etc]# cp /etc/issue /testdir/
    [root@localhost etc]# ll /testdir/
    總用量 4
    -rw-r--r--. 1 root root 23 7月  29 13:56 issue
2.移動文件或目錄並改名
[root@localhost etc]# ls /root/
    201401120958.27  acd    file1            issue                 視頻  下載
    [root@localhost etc]# mv /root/issue  /root/qzx123
    [root@localhost etc]# ls /root/
    201401120958.27  acd    file1            qzx123                視頻  下載
3.覆蓋前的備份 -b
[root@localhost etc]# mv -bi /testdir/issue /root/
    mv:是否覆蓋"/root/issue"? y
    [root@localhost etc]# ls /root/
     issue~ issue

rm (remove)

功能說明:刪除文件或目錄。

語  法:rm [-dfirv][--help][--version][文件或目錄...]

補充說明:執行rm指令可刪除文件或目錄,如欲刪除目錄必須加上參數"-r",否則預設僅會刪除文件。

選 項:

-d或--directory  直接把欲刪除的目錄的硬連接數據刪成0,刪除該目錄。-f或--force  強制刪除文件或目錄。

-i或--interactive  刪除既有文件或目錄之前先詢問用戶。

-r或-R或--recursive  遞歸處理,將指定目錄下的所有文件及子目錄一並處理。

-v或--verbose  顯示指令執行過程。

一般執行方式: rm -rf /PATH/TO/DIR (危險操作,請完全確認再後執行)

[root@localhost ~]# ls /testdir/
    issue  yum
    [root@localhost ~]# rm -r /testdir/*
    rm:是否刪除普通文件 "/testdir/issue"?
    rm:是否進入目錄"/testdir/yum"? 
    [root@localhost ~]# ls /testdir/
    issue  yum
    [root@localhost ~]# rm -rf /testdir/*
    [root@localhost ~]# ls /testdir/
    [root@localhost ~]#
默認
[root@localhost ~]# alias rm
alias rm='rm -i'
且默認回車為否不刪除 不進入 ”n“注意:所有不用的文件建議不要直接刪除,而是移動至某個專用目錄:(模擬回收站)

Copyright © Linux教程網 All Rights Reserved