1 遍歷目錄
cd:change dicrectory的縮寫
.或者./代表當前目錄,..或../代表上一級目錄,cd -代表進入上一次的目錄。
2 文件和目錄列表
ls:list的縮寫,會顯示目錄下的文件。
用法:ls [-laFR] [dir],其中-F表示在目錄后加/表示區分,-R為遞歸顯示。
3 處理文件
3.1 創建文件touch
命令格式:touch [-acdfmrt] 文件
命令參數:
-a 或--time=atime或--time=access或--time=use 只更改存取時間
-c 或--no-create 不建立任何文檔
-d 使用指定的日期時間,而非現在的時間
-f 此參數將忽略不予處理,僅負責解決BSD版本touch指令的兼容性問題
-m 或--time=mtime或--time=modify 只更改變動時間。
-r 把指定文檔或目錄的日期時間,統統設成和參考文檔或目錄的日期時間相同。
-t 使用指定的日期時間,而非現在的時間
命令功能:
touch命令參數可更改文檔或目錄的日期時間,包括存取時間和更改時間
使用范例:
實例一:創建不存在的文件
touch a.log b.log 一次建立了兩個日志文件
3.2 復制文件cp
命令格式:cp [-ipru] [file/dir]
命令參數:
-i 覆蓋文件之前先詢問
-p 保留源文件或目錄的屬性,包括所有者、所屬組、權限與時間
-r 遞歸處理,將指定目錄下的文件及子目錄一並處理,通常用作復制目錄
-u 使用這項參數之后,只會在源文件的修改時間(Modification Time)較目的文件更新時,或是名稱相互對應的目的文件並不存在,才復制文件
命令功能:
cp可用於文件或者目錄的拷貝
使用范例:
[root@leon data]# cp -p ett.xtx tte.txt 保留文件屬性拷貝,並更名為tte.txt
3.3 移動或重命名文件mv
命令格式:mv [-bfiut] [file/dir]
命令參數:
-f force 強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋
-i 若目標文件 (destination) 已經存在時,就會詢問是否覆蓋
-u 若目標文件已經存在,且 source 比較新,才會更新(update)
命令功能:
mv命令可用於修改文件或者目錄的名字
使用范例:
[root@leon data]# mv tte.txt changename.txt 修改tte.txt的名字
3.4 刪除文件rm
命令格式:rm [-irf] [file/dir]
命令參數:
-i 進行任何刪除操作前必須先確認
-f 強制刪除
-r 遞歸刪除
命令功能:
rm用於刪除文件,一般常和find在一起使用,這點我們在find用法中會講到。
使用范例:
[root@leon data]# rm -fr test/
4 處理目錄
4.1 創建目錄mkdir
命令格式:mkdir [-mpv] [dir]
命令參數:
-m mode,為目錄指定訪問權限,與chmod類似
-p 如果目錄已經存在,則不會有錯誤提示。若父目錄不存在,將會創建父目錄。該選項常用於創建級聯目錄。
-v 為每個目錄顯示提示信息
命令功能:
創建單個目錄或者級聯目錄。
使用范例:
[root@leon data]# mkdir -p blog/{bin,lib,var/{etc,doc,logfile}}
[root@leon data]# tree blog/
blog/
├── bin
├── lib
└── var
├── doc
├── etc
└── logfile
4.2 刪除目錄rmdir
默認情況下rmdir命令只是用來刪除空目錄的,非空目錄的刪除需要用rm -fr來遞歸刪除,這樣用的風險很大,所以一般會和find聯合使用。
5 查看文件
5.1 cat命令
命令格式:cat [-nbT] [file]
命令參數:
-n 給所有的行加上行號
-b 只給文本加上行號
-T 不顯示制表符,用^I代替
命令功能:
查看整個文件內容
5.2 more/less
命令功能:
分頁顯示,比cat更方便。
5.3 查看部分文件
5.3.1 tail命令
命令參數:
-n 顯示最后多少行的信息
命令功能:
顯示尾部XXX行信息
使用范例:
[root@leon data]# tail -n 3 a.txt
18
19
20
5.3.2 head命令
命令參數:
同tail
命令功能:
顯示頭部XXX行信息
使用范例:
[root@oldboy data]# head -n 3 a.txt
1
2
3
6 find查找命令
命令格式:find [路徑] [參數選項]
命令參數:
-name 按照文件名查找文件。
find /data -name filename 在/data目錄及其子目錄下面查找名字為filename的文件
find . -name "*.sh" 在當前目錄及其子目錄(用“.”表示)中查找任何擴展名為“sh”的文件
-perm 按照文件權限來查找文件。
find . -perm 755 在當前目錄下查找文件權限位為755的文件
-prune 使用這一選項可以使find命令不在當前指定的目錄中查找,如果同時使用-depth選項,那么-prune將被find命令忽略。
find /apps -path "/apps/bin" -prune 在/apps目錄下查找文件,但不希望在/apps/bin目錄下查找
-user 按照文件屬主來查找文件
find ~ -user root 在$HOME目錄中查找文件屬主為sam的文件
-group 按照文件所屬的組來查找文件
-mtime 按照文件的更改時間來查找文件
+7:表示7天以前
-7:最近七天
7:第七天
-type 按照文件類型查找
b - 塊設備文件
d - 目錄
c - 字符設備文件
p - 管道文件
l - 符號鏈接文件
f - 普通文件
-size n:[c] 查找文件長度為n塊的文件,帶有c時表示文件長度以字節計
find與xargs
在使用find命令的-exec選項處理匹配到的文件時, find命令將所有匹配到的文件一起傳遞給exec執行。但有些系統對能夠傳遞給exec的命令長度有限制,這樣在find命令運行幾分鍾之后,就會出現溢出錯誤。錯誤信息通常是“參數列太長”或“參數列溢出”。這就是xargs命令的用處所在,特別是與find命令一起使用。
find命令把匹配到的文件傳遞給xargs命令,而xargs命令每次只獲取一部分文件而不是全部,不像-exec選項那樣。這樣它可以先處理最先獲取的一部分文件,然后是下一批,並如此繼續下去。
在有些系統中,使用-exec選項會為處理每一個匹配到的文件而發起一個相應的進程,並非將匹配到的文件全部作為參數一次執行;這樣在有些情況下就會出現進程過多,系統性能下降的問題,因而效率不高;而使用xargs命令則只有一個進程。另外,在使用xargs命令時,究竟是一次獲取所有的參數,還是分批取得參數,以及每一次獲取參數的數目都會根據該命令的選項及系統內核中相應的可調參數來確定
find刪除
[root@leon home]# find . -type f -name "*.txt" | xargs rm -f (推薦刪除)
find+sed
[root@leon data]# find . -type f -name "*.sh" | xargs sed 's/oldboy/oldgirl/g'
參考資料:
https://www.cnblogs.com/skynet/archive/2010/12/25/1916873.html
https://www.cnblogs.com/peida/archive/2012/11/16/2773289.html
