Linux檔案管理和編輯常用命令

xie仗劍天涯發表於2017-09-27

Linux檔案管理和編輯常用命令

mkdir 命令

  1. 功能說明
    mkdir 命令用於建立一個目錄,mkdir是make directory的縮寫
    格式:
mkdir [選項] 目錄名

mkdir 命令的選項及說明

-m  對新建目錄設定存取許可權
-p  可以指定一個路徑名稱(一次建立多個目錄)
  1. 簡單示例
    在/home目錄下建立user1目錄,同時在user01目錄下建立user2目錄
[root@cinder01 ~]# mkdir -p /home/user1/user2
[root@cinder01 ~]# cd /home/user1/user2/
[root@cinder01 user2]# pwd
/home/user1/user2

mkdir 命令

  1. 功能說明
    more命令讀取文字檔案時,每次顯示一屏,並且在每屏後暫停。
    格式:
more [選項] 檔名

more命令的選項及其說明

-d  在螢幕底部more提示符顯示友好提示
-s  將輸出檔案中的多個空行減少為只有一個空行輸出,以第一行為準
-p  先清除螢幕以前的資訊,再顯示文字資訊
-c  顯示檔案時,每屏都清除螢幕先前的資訊,然後從最頂端顯示出來
  1. 簡單示例
    分頁顯示yum.log檔案內容
[root@cinder01 ~]# more yum.log

顯示yum.log檔案內容,每10行顯示一屏,同時清屏

[root@cinder01 ~]# more -c -10 yum.log

cat 命令

  1. 功能說明
    cat 命令用來將檔案內容輸出到標準輸出,同時cat可以用於連線合並檔案
    格式:
cat [選項] 檔名
或
cat 檔案1 檔案2 > 檔案3

cat選項及其說明

-A  將檔案中的製表符顯示為“^I”,同時在每行的末尾顯示一下“$”符號
-b  將檔案中的所有非空行按順序編號,編號從1開始
-n  顯示檔案行號(包括空行)
  1. 簡單示例
    檢視config檔案內容,同時將檔案中的製表符顯示為“^I”,並對非空行編號
[root@cinder01 ~]# cat -Ab /etc/selinux/config 
$
     1  # This file controls the state of SELinux on the system.$
     2  # SELINUX= can take one of these three values:$
     3  #     enforcing - SELinux security policy is enforced.$
     4  #     permissive - SELinux prints warnings instead of enforcing.$
     5  #     disabled - No SELinux policy is loaded.$
     6  SELINUX=disabled$
     7  # SELINUXTYPE= can take one of three two values:$
     8  #     targeted - Targeted processes are protected,$
     9  #     minimum - Modification of targeted policy. Only selected processes are protected. $
    10  #     mls - Multi Level Security protection.$
    11  SELINUXTYPE=targeted $
$
$
[root@cinder01 ~]# 

將兩個文件合併輸出到第三個檔案中

[root@cinder01 ~]# echo "This is file1.txt" > file1.txt
[root@cinder01 ~]# 
[root@cinder01 ~]# echo "This is file2.txt" > file2.txt 
[root@cinder01 ~]# 
[root@cinder01 ~]# cat file1.txt file2.txt > file3.txt
[root@cinder01 ~]# 
[root@cinder01 ~]# more file3.txt 
This is file1.txt
This is file2.txt
[root@cinder01 ~]# 

diff 命令

  1. 功能介紹
    diff 命令用於比較兩個檔案的差異。diff以逐行的方式比較檔案的異同,如果指定的是目錄,則比較目錄中檔名相同的檔案,不會比較子目錄。
    格式:
diff [選項]檔案1 檔案2

diff 選項及其說明

-c  顯示全部內容,並標出不同之處
-b  忽略尾行的空格,同時字串中的一個或多個空格都視為相同
-r  當檔案1和檔案2為目錄時,會比較子目錄的檔案
-s  當兩個檔案相同時,顯示檔案的相同資訊
  1. 簡單示例
    比較檔案file1.txt file2.txt 的異同
    [root@cinder01 ~]# diff file1.txt file2.txt 
    1c1
    < This is file1.txt
    ---
    > This is file2.txt
    [root@cinder01 ~]# diff file1.txt file3.txt  
    1a2
    > This is file2.txt
    [root@cinder01 ~]# 
    [root@cinder01 ~]# diff -c file1.txt file3.txt 
    *** file1.txt   2017-08-26 23:06:21.583437621 +0800
    --- file3.txt   2017-08-26 23:07:01.678173298 +0800
    ***************
    *** 1 ****
    --- 1,2 ----
      This is file1.txt
    + This is file2.txt
    [root@cinder01 ~]# 

grep 命令

  1. 功能說明
    grep命令是linux下文字過濾工具,grep根據指定的字串,對文字的每一行進行搜尋,如果找到這個字串,就輸出該行的內容
    格式
grep [選項] 需要查詢的字串檔名

grep 命令的選項的常用選項說明

-A NUM  除了列出符合條件的行外,同時列出每個符合條件的後NUM行
-c  只顯示符合條件的行數,而不顯示每行的具體資訊
-f file 事先將要搜尋的樣式寫入一個檔案中,每行一個樣式,然後以這個檔案作為條件進行搜尋
-i  搜尋時忽略大小寫
-n  在搜尋結果中顯示行號
-B  與選項“-A”相反,除了列出符合條件的行外,同時列出每個符合條件行的錢NUM行
  1. 簡單示例
    列出config檔案中含有disabled字串的行
[root@cinder01 ~]# grep disabled config
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
[root@cinder01 ~]#

列出config檔案中含有disabled字串的行,並標識每行的具體行號

[root@cinder01 ~]# grep -n disabled config
6:#     disabled - No SELinux policy is loaded.
7:SELINUX=disabled
[root@cinder01 ~]#

rm 命令

  1. 功能說明
    rm 命令用來刪除某個目錄及其下的所有檔案及子目錄,對於連結檔案,只是斷開連結,原檔案不變
    格式
rm [選項] 檔案或者目錄

rm 命令的選項及說明

-r  告訴rm將選項中列出的全部目錄以及子目錄檔案均遞迴刪除,如果不指定"-r"選項,“rm”命令不能刪除非空目錄
-f  忽略不存在問題,也不給出提示
-i  互動式刪除,即在刪除前確認
  1. 簡單示例
    刪除 file3檔案
[root@cinder01 ~]# rm -rf file3.txt

[注:]使用命令結合“rm -rf”時需小心,因為檔案一旦刪除,就不能不想恢復,建議使用“-i”選項,在刪除時,再確認是否要刪除檔案


touch 命令

  1. 功能說明
    touch 命令用來改變指定檔案的訪問時間和修改時間,若指定檔案不存在則建立此檔案,若不指定時間,則使用當前時間
touch [選項] 設定的時間檔案

touch命令的選項及其說明

-a  改變檔案的訪問時間為系統當前時間,無須設定時間選項
-m  改變檔案的修改時間為系統當前時間,無須設定時間格式
-c  如果檔案不存在,不建立也不提升
-d 或 -t 使用指定的日期或時間
-r<參考檔案或目錄> 把指定檔案或目錄的日期,時間都設定成和參考檔案或目錄的日期,時間相同
  1. 簡單示例
    touch命令的操作例項,“#”號後面的內容為命令註釋
[root@cinder01 ~]# touch test.txt  # 建立一個檔案test.txt
[root@cinder01 ~]# ls -l test.txt   # 顯示檔案建立時間
-rw-r--r-- 1 root root 0 Aug 27 00:49 test.txt
[root@cinder01 ~]# date    # 系統當前時間
Sun Aug 27 00:50:06 CST 2017
[root@cinder01 ~]# ls -lu test.txt 
-rw-r--r-- 1 root root 0 Aug 27 00:49 test.txt
[root@cinder01 ~]# touch -a test.txt # 改變檔案訪問時間為系統當前時間
[root@cinder01 ~]# 
[root@cinder01 ~]# ls -lu test.txt 
-rw-r--r-- 1 root root 0 Aug 27 00:50 test.txt
[root@cinder01 ~]# 
[root@cinder01 ~]# touch -m test.txt # 改變檔案的修改時間為系統當前時間
[root@cinder01 ~]# 
[root@cinder01 ~]# ls -l test.txt 
-rw-r--r-- 1 root root 0 Aug 27 00:50 test.txt
[root@cinder01 ~]# 
[root@cinder01 ~]# 

ln 命令

  1. 功能說明
    ln 命令用來在檔案或目錄之間建立連結
    linux 環境下有硬連結和軟連線兩種
    硬連結:是指通過檔案的incode來進行連結
    軟連結:是一個指向真正檔案或者目錄位置的符號連線(類似於windows系統的快捷方式)
    格式:
ln [選項] 原始檔 目標連結名

ln命令選項及其說明

-f  如果在目標位置存在與連結名相同的檔案,這個檔案將被刪除
-s  進行軟連結
-d  允許系統管理員硬連結自己的目錄
-b  對將在連結時會被覆蓋或者刪除的檔案進行備份
  1. 簡單示例
    將/etc/inittab檔案進行硬連結到/opt/backup目錄下(此時,backup目錄下會生成一個inittab檔案,與原始檔內容相同)
[root@cinder01 ~]# ln /etc/inittab /opt/backup/inittab

將/etc/inittab檔案進行軟連結到/opt目錄下

[root@cinder01 ~]# ln -s /etc/inittab /opt/
[root@cinder01 ~]# ls -l /opt/
total 4
lrwxrwxrwx 1 root root  12 Aug 27 01:08 inittab -> /etc/inittab
[root@cinder01 ~]#

file 命令

  1. 功能說明
    file命令用來顯示檔案的型別,對於長度為0的檔案,將識別為空檔案,對於符號連線檔案,預設情況下將顯示符號連結引用的真實檔案路徑
    格式
file [選項] 檔名

file命令的選項及說明

-b  顯示檔案型別結果,不顯示對應檔名稱
-L  直接顯示符號連結所指向檔案的型別
-z  顯示壓縮檔案的資訊
-i  如果檔案不是常規檔案,則不進一步對檔案型別進行分類
  1. 簡單示例
    顯示/etc/init.d/network檔案型別,顯示結果為shell可執行檔案
[root@cinder01 ~]# file /etc/init.d/network 
/etc/init.d/network: Bourne-Again shell script, ASCII text executable
[root@cinder01 ~]#

顯示/bin/sh檔案的型別,顯示結果為符號連結檔案

[root@cinder01 ~]# file /bin/sh
/bin/sh: symbolic link to `bash'
[root@cinder01 ~]#

顯示file1.txt檔案型別。顯示結果為ASCII檔案文字

[root@cinder01 ~]# file file1.txt 
file1.txt: ASCII text
[root@cinder01 ~]#

顯示/dev/sda1檔案型別,顯示結果為塊裝置檔案

[root@cinder01 ~]# file /dev/sda1 
/dev/sda1: block special
[root@cinder01 ~]#

cp 命令

  1. 功能說明
    cp命令用來將給出的檔案或者目錄複製到另一個檔案或者目錄
    格式:
cp [選項] 原始檔母子目錄 目標檔案或者目錄

cp命令的選項及其說明

-a  在複製目錄時使用,它保留所有資訊,包含檔案連結,檔案屬性,並遞迴地複製目錄
-r  若給出的原檔案是一個目錄檔案,此時cp將遞迴複製該目錄下所有的子目錄和檔案
-d  複製時保留連結,這樣不會失去連結檔案
-p  保留檔案的修改時間和存取許可權
-i  如果已經有相同檔名的目標檔案,則提示使用者是否覆蓋
  1. 簡單示例
    將當前目錄下的所有檔案複製到/tmp目錄下,“./*”表示當前目錄下所有檔案和目錄
[root@cinder01 ~]# cp -r ./* /tmp

將/home目錄下的目錄及子目錄全部複製到/tmp目錄下

[root@cinder01 ~]# cp -r /home/ /tmp/

find 命令

  1. 功能說明
    find 命令用於在指定的路徑下查詢指定的檔案
    格式:
find path-name[-options] [-print -exec -ok命令 {} \;]

選項說明:

    -amin<分鐘>:查詢在指定時間曾被存取過的檔案或目錄,單位以分鐘計算; 
    -anewer<參考檔案或目錄>:查詢其存取時間較指定檔案或目錄的存取時間更接近現在的檔案或目錄; 
    -atime<24小時數>:查詢在指定時間曾被存取過的檔案或目錄,單位以24小時計算; 
    -cmin<分鐘>:查詢在指定時間之時被更改過的檔案或目錄; 
    -cnewer<參考檔案或目錄>查詢其更改時間較指定檔案或目錄的更改時間更接近現在的檔案或目錄; 
    -ctime<24小時數>:查詢在指定時間之時被更改的檔案或目錄,單位以24小時計算; 
    -daystart:從本日開始計算時間; 
    -depth:從指定目錄下最深層的子目錄開始查詢; 
    -expty:尋找檔案大小為0 Byte的檔案,或目錄下沒有任何子目錄或檔案的空目錄; 
    -exec<執行指令>:假設find指令的回傳值為True,就執行該指令; 
    -false:將find指令的回傳值皆設為False; 
    -fls<列表檔案>:此引數的效果和指定“-ls”引數類似,但會把結果儲存為指定的列表檔案; 
    -follow:排除符號連線; 
    -fprint<列表檔案>:此引數的效果和指定“-print”引數類似,但會把結果儲存成指定的列表檔案; 
    -fprint0<列表檔案>:此引數的效果和指定“-print0”引數類似,但會把結果儲存成指定的列表檔案; 
    -fprintf<列表檔案><輸出格式>:此引數的效果和指定“-printf”引數類似,但會把結果儲存成指定的列表檔案; 
    -fstype<檔案系統型別>:只尋找該檔案系統型別下的檔案或目錄; 
    -gid<群組識別碼>:查詢符合指定之群組識別碼的檔案或目錄; 
    -group<群組名稱>:查詢符合指定之群組名稱的檔案或目錄; 
    -help或——help:線上幫助; 
    -ilname<範本樣式>:此引數的效果和指定“-lname”引數類似,但忽略字元大小寫的差別; 
    -iname<範本樣式>:此引數的效果和指定“-name”引數類似,但忽略字元大小寫的差別; 
    -inum:查詢符合指定的inode編號的檔案或目錄; 
    -ipath<範本樣式>:此引數的效果和指定“-path”引數類似,但忽略字元大小寫的差別; 
    -iregex<範本樣式>:此引數的效果和指定“-regexe”引數類似,但忽略字元大小寫的差別; 
    -links<連線數目>:查詢符合指定的硬連線數目的檔案或目錄; 
    -iname<範本樣式>:指定字串作為尋找符號連線的範本樣式; 
    -ls:假設find指令的回傳值為Ture,就將檔案或目錄名稱列出到標準輸出; 
    -maxdepth<目錄層級>:設定最大目錄層級; 
    -mindepth<目錄層級>:設定最小目錄層級; 
    -mmin<分鐘>:查詢在指定時間曾被更改過的檔案或目錄,單位以分鐘計算; 
    -mount:此引數的效果和指定“-xdev”相同; 
    -mtime<24小時數>:查詢在指定時間曾被更改過的檔案或目錄,單位以24小時計算; 
    -name<範本樣式>:指定字串作為尋找檔案或目錄的範本樣式; 
    -newer<參考檔案或目錄>:查詢其更改時間較指定檔案或目錄的更改時間更接近現在的檔案或目錄; 
    -nogroup:找出不屬於本地主機群組識別碼的檔案或目錄; 
    -noleaf:不去考慮目錄至少需擁有兩個硬連線存在; 
    -nouser:找出不屬於本地主機使用者識別碼的檔案或目錄; 
    -ok<執行指令>:此引數的效果和指定“-exec”類似,但在執行指令之前會先詢問使用者,若回答“y”或“Y”,則放棄執行命令; 
    -path<範本樣式>:指定字串作為尋找目錄的範本樣式; 
    -perm<許可權數值>:查詢符合指定的許可權數值的檔案或目錄; 
    -print:假設find指令的回傳值為Ture,就將檔案或目錄名稱列出到標準輸出。格式為每列一個名稱,每個名稱前皆有“./”字串; 
    -print0:假設find指令的回傳值為Ture,就將檔案或目錄名稱列出到標準輸出。格式為全部的名稱皆在同一行; 
    -printf<輸出格式>:假設find指令的回傳值為Ture,就將檔案或目錄名稱列出到標準輸出。格式可以自行指定; 
    -prune:不尋找字串作為尋找檔案或目錄的範本樣式; 
    -regex<範本樣式>:指定字串作為尋找檔案或目錄的範本樣式; 
    -size<檔案大小>:查詢符合指定的檔案大小的檔案; 
    -true:將find指令的回傳值皆設為True; 
    -type<檔案型別>:只尋找符合指定的檔案型別的檔案; 
    -uid<使用者識別碼>:查詢符合指定的使用者識別碼的檔案或目錄; 
    -used<日數>:查詢檔案或目錄被更改之後在指定時間曾被存取過的檔案或目錄,單位以日計算; 
    -user<擁有者名稱>:查詢符和指定的擁有者名稱的檔案或目錄; 
    -version或——version:顯示版本資訊; 
    -xdev:將範圍侷限在先行的檔案系統中; 
    -xtype<檔案型別>:此引數的效果和指定“-type”引數類似,差別在於它針對符號連線檢查。
  1. 簡單示例
    列出當前目錄及子目錄下所有檔案和資料夾
[root@cinder01 ~]# find . 

在/home目錄下查詢以.txt結尾的檔名

[root@cinder01 ~]# find /home -name "*.txt" 

同上,但忽略大小寫

[root@cinder01 ~]# find /home -iname "*.txt" 

當前目錄及子目錄下查詢所有以.txt和.pdf結尾的檔案

[root@cinder01 ~]#  find . \( -name "*.txt" -o -name "*.pdf" \) 
或 
[root@cinder01 ~]# find . -name "*.txt" -o -name "*.pdf"

匹配檔案路徑或者檔案

[root@cinder01 ~]#  find /usr/ -path "*local*"

基於正規表示式匹配檔案路徑

[root@cinder01 ~]# find . -regex ".*\(\.txt\|\.pdf\)$"

split 命令

  1. 功能說明
    split命令用於分割文件,將一個文件分拆成幾個
    格式:
split [選項] [input_file] [output_file]

split命令選項說明

-b size 指定分割出來的檔案大小,size可以加入單位,b表示512位元組,k表示1KB,m表示1MB
-n  將“n”指定分割的每個檔案的長度,預設為1000行
-d  將split命令生成的檔案序列以數字形式命名
-a  指定split命令生成的檔案序列的長度,預設長度為2
  • input_file: 需要分割的檔案
  • output_file: 分割出來的檔案序列,split命令分割後生成的檔案序列依次排序
  1. 簡單示例
    將messages-20170925檔案分割,設定每個分割檔案的大小為10KB
[root@cinder01 ~]# split -b 10k messages-20170925 messages

mv 命令

  1. 功能說明
    mv命令用來將檔案或者目錄改名或者將檔案由一個目錄移動到另一個目錄下
    格式:
mv [選項] 原始檔或者目錄 目標檔案或者目錄

mv命令的選項及其說明

-i  互動式操作,在對已經存在的檔案或者目錄覆蓋時,系統會詢問是否覆蓋
-f  禁止互動式操作,在mv將要覆蓋檔案或者目錄時,不提示任何提示,預設覆蓋
  1. 簡單示例
    修改檔名,將12333.jpg重新命名為1111.jpg
[root@cinder01 ~]# mv 12333.jpg 1111.jpg

相關文章