1. 程式人生 > >Shell命令-文件及目錄操作之touch、tree

Shell命令-文件及目錄操作之touch、tree

rwx 命令 acc .org lol ash 修改 head 文件時間

文件及目錄操作 - touch、tree

1、touch:創建文件或更改文件時間戳

touch命令的功能說明

touch命令用於創建新的空文件或改變已有文件的時間戳屬性。

touch命令的語法格式

touch [OPTION]... FILE...
touch [參數選項] [文件]

touch命令的選項說明

touch 選項不常用,就不細說了:

touch命令的實踐操作

範例1: 創建文件(文件事先不存在的情況)

[[email protected]  ~]# mkdir -p /test
[[email protected]  ~]# cd /test
[[email protected]  /test]# ls
[[email protected]  /test]# touch oldboy.txt
[[email protected]  /test]# ls
oldboy.txt
[[email protected]  /test]# touch a.txt b.txt
[[email protected]  /test]# ls
a.txt  b.txt  oldboy.txt
[[email protected]  /test]# touch stu{1..4}          <-->利用{ }有序序列批量創建文件
[[email protected]  /test]# ls
a.txt  b.txt  oldboy.txt  stu1  stu2  stu3  stu4

範例1: 更改文件的時間戳屬性

[[email protected]  /test]# stat oldboy.txt 
  File: ‘oldboy.txt’
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 803h/2051d  Inode: 51524120    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-04-06 19:00:34.447304058 +0800
Modify: 2019-04-06 19:00:34.447304058 +0800
Change: 2019-04-06 19:00:34.447304058 +0800
 Birth: -
[[email protected]  /test]# touch -a oldboy.txt         <--> -a 參數只更改文件的最後訪問時間
[[email protected]  /test]# stat oldboy.txt 
  File: ‘oldboy.txt’
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 803h/2051d  Inode: 51524120    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-04-06 19:04:20.967284353 +0800
Modify: 2019-04-06 19:00:34.447304058 +0800     <-->時間變了
Change: 2019-04-06 19:04:20.967284353 +0800
 Birth: -
[[email protected]  /test]# touch -m oldboy.txt       <--> -m 參數只更改文件的最後修改時間
[[email protected]  /test]# stat oldboy.txt
  File: ‘oldboy.txt’
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 803h/2051d  Inode: 51524120    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-04-06 19:04:20.967284353 +0800      <-->時間變了
Modify: 2019-04-06 19:05:13.179279812 +0800
Change: 2019-04-06 19:05:13.179279812 +0800
 Birth: -

範例2: 指定時間屬性創建/修改文件(不常用,了解即可)

[[email protected]  /test]# ls -lh oldboy.txt 
-rw-r--r-- 1 root root 0 Apr  6 19:05 oldboy.txt
[[email protected]  /test]# touch -d 20201001 oldboy.txt              <--> -d 參數的用法
[[email protected]  /test]# ls -lh oldboy.txt 
-rw-r--r-- 1 root root 0 Oct  1  2020 oldboy.txt
[[email protected]  /test]# ls -lh a.txt 
-rw-r--r-- 1 root root 0 Apr  6 19:00 a.txt
[[email protected]  /test]# touch -r a.txt oldboy.txt                         <--> -r 參數的用法
[[email protected]  /test]# ls -lh oldboy.txt 
-rw-r--r-- 1 root root 0 Apr  6 19:00 oldboy.txt
[[email protected]  /test]# touch -t 201904161914.50 oldboy.txt   <--> -t 參數的用法
[[email protected]  /test]# ls -lh oldboy.txt 
-rw-r--r-- 1 root root 0 Apr 16  2019 oldboy.txt
[[email protected]  /test]# ls -lh --full-time oldboy.txt                    <-->查看結果
-rw-r--r-- 1 root root 0 2019-04-16 19:14:50.000000000 +0800 oldboy.txt

2、tree:以樹形結構顯示目錄下內容

tree命令的功能說明

tree命令用於以樹形結構列出指定目錄下的所有內容,包括所有文件、子目錄等。

tree命令的語法格式

tree [OPTION]... [directory ...]
tree [參數選項] [目錄]

tree命令的選項說明

tree 選項很多,表1為 tree 命令的常用參數及說明:

表1: tree命令的常用參數及說明

參數選項 解釋說明(帶*的為重點)
-a 顯示所有文件,包括隱藏文件
-d 只顯示目錄 *
-f 顯示每個文件的全路徑
-i 不顯示樹枝,常用參數-f配合使用
-L level 遍歷目錄的最大層數,level為大於0的正整數 *
-F 在不同類型文件結尾加各種表示

tree命令的實踐操作

環境準備

[[email protected]  ~]# rpm -qa tree                <-->查詢tree命令是否安裝
tree-1.6.0-10.el7.x86_64                                     <-->顯示已經安裝,若未安裝,執行以下操作
[[email protected]  ~]# yum install tree -y        <-->使用yum,進行安裝tree命令
[[email protected]  ~]# LANG=en_US.UTF-8    <-->臨時調整系統字符集,防止樹形顯示亂碼

範例1: 不加任何參數執行 tree命令

[[email protected]  ~]# tree      <-->以實驗環境為準
.
└── anaconda-ks.cfg

0 directories, 1 file

範例2: 以樹形結構顯示目錄下的所有內容( -a 的功能)

[[email protected]  ~]# tree -a    <-->以 . 開頭的文件都顯示出來
.
├── anaconda-ks.cfg
├── .bash_history
├── .bash_logout
├── .bash_profile
├── .bashrc
├── .cshrc
├── .gem
│?? ├── ruby
│?? │?? └── cache
│?? │??     └── paint-2.0.3.gem
│?? └── specs
│??     └── rubygems.org%443
│??         ├── latest_specs.4.8
│??         ├── prerelease_specs.4.8
│??         ├── quick
│??         │?? └── Marshal.4.8
│??         │??     ├── lolcat-99.9.21.gemspec
│??         │??     ├── manpages-0.6.1.gemspec
│??         │??     ├── optimist-3.0.0.gemspec
│??         │??     ├── paint-2.0.0.gemspec
│??         │??     ├── paint-2.0.1.gemspec
│??         │??     ├── paint-2.0.2.gemspec
│??         │??     └── paint-2.0.3.gemspec
│??         └── specs.4.8
├── .ssh
│?? └── authorized_keys
├── .tcshrc
└── .viminfo

8 directories, 20 files

範例3: 只列出根目錄下第一層目錄結構( -L 的功能)

[[email protected]  /test]# mkdir -p dir{1..2}/text{1..2}                <-->模擬環境,創建目錄
[[email protected]  /test]# touch dir{1..2}/text{1..2}/{1..2}.txt       <-->模擬環境,文件
[[email protected]  /test]# tree                                                      <-->不加參數的結果
.
├── dir1
│?? ├── text1
│?? │?? ├── 1.txt
│?? │?? └── 2.txt
│?? └── text2
│??     ├── 1.txt
│??     └── 2.txt
└── dir2
    ├── text1
    │?? ├── 1.txt
    │?? └── 2.txt
    └── text2
        ├── 1.txt
        └── 2.txt

6 directories, 8 files
[[email protected]  /test]# tree -L 1                                                 <-->加參數的結果
.
├── dir1
└── dir2

2 directories, 0 files

範例4: 只顯示所有目錄(但不顯示文化)

[[email protected]  /test]# tree -d dir1              <--> -d 只顯示目錄
dir1
├── text1
└── text2

2 directories
[[email protected]  /test]# ls -l dir1
total 0
drwxr-xr-x 2 root root 32 Apr  6 19:52 text1      <-->text1和text2是目錄文件
drwxr-xr-x 2 root root 32 Apr  6 19:52 text2
[[email protected]  /test]# cd dir1
[[email protected]  /test/dir1]# ls
text1  text2
[[email protected]  /test/dir1]# ls text1/
1.txt  2.txt
[[email protected]  /test/dir1]# ll text1/
total 0
-rw-r--r-- 1 root root 0 Apr  6 19:52 1.txt           <-->1.txt和2.txt是文件
-rw-r--r-- 1 root root 0 Apr  6 19:52 2.txt

範例4: 使用 tree命令區分目錄和文件的方法(常用)

[[email protected]  /test]# tree -L 3 -F                            <-->是目錄的話後面加.
├── dir1/
│?? ├── text1/
│?? │?? ├── 1.txt
│?? │?? └── 2.txt
│?? └── text2/
│??     ├── 1.txt
│??     └── 2.txt
└── dir2/
    ├── text1/
    │?? ├── 1.txt
    │?? └── 2.txt
    └── text2/
        ├── 1.txt
        └── 2.txt

6 directories, 8 files
[[email protected]  /test]# tree -L 1 -F /boot/ |grep /$    <-->過濾以斜線結尾的所有內容
/boot/
├── efi/
├── grub/
├── grub2/
[[email protected]  /test]# tree -L 1 -d /boot/                 <-->使用 -d參數只顯示目錄樹
/boot/
├── efi
├── grub
└── grub2

3 directories

今天就寫到這裏,有什麽疑問或出現什麽錯誤,隨時歡迎大神們發表評論指點迷津

Shell命令-文件及目錄操作之touch、tree