1. 程式人生 > 其它 >Linux 命令:find/grep/sed/awk/du/df

Linux 命令:find/grep/sed/awk/du/df

目錄

find

# find 屬於全部匹配,如輸入abc,不能查到abcd
# find 預設採用遞迴搜尋

# 按時間
find . -atime -1  ## 一天內訪問過
find . -ctime -1  ## 一天內屬性有修改
find . -mtime -1  ## 一天內內容有修改

# 查詢比某個file新的檔案:
find . -newer file

# 按大小
find . -size +10k  ## 大於10k
find . -size -1G   ## 小於1G

# 尋找深度
find . -maxdepth 2 -name 'xx'  ## 搜尋最大目錄深度為2

# 過濾某些路徑
dewan@wsl ~/tmp% find .
.
./2
./2/b
./1
./1/a
dewan@wsl ~/tmp% find . ! -path '*2*' ! -path '*1*'
.

# 拓展
正則,必須包含整個檔案路徑
與 xargs 配合
與 exec 配合
與 grep 配合
與 sed 配合

grep

-i -n -r -l -c -v -f

# 匹配換行符
grep -zoP '1.*\n.*2' file  ## 包含1和2的相鄰行,並列印 1之後,2之前的內容

sed

# 先備份,再替換檔案中的內容
dewan@wsl ~/tmp% touch file
dewan@wsl ~/tmp% echo 123 > file
dewan@wsl ~/tmp% sed -i.aa 's/2/6/g' file
dewan@wsl ~/tmp% ll
total 16K
drwxr-xr-x 3 dewan dewan 4.0K Mar 18 10:54 1
drwxr-xr-x 3 dewan dewan 4.0K Mar 18 10:54 2
-rw-r--r-- 1 dewan dewan    4 Mar 18 11:08 file
-rw-r--r-- 1 dewan dewan    4 Mar 18 11:07 file.aa
dewan@wsl ~/tmp% cat file*
163
123

# 匹配後對下一行操作
dewan@wsl ~/tmp% echo 123 >> file
dewan@wsl ~/tmp% sed -r '/163/{n;s/123/222/g}' file
163
222

# 拓展
find 與 sed 配合
grep 與 sed 配合

awk

# -F 指定分隔符;$1指定第一個欄位,依次類推;$0指定當前行;$NF指代欄位總數
dewan@wsl ~/tmp% echo "1:2:3" > test
dewan@wsl ~/tmp% awk -F: '/1/{print ($1+$2)*$3 }' test
9

# 支援多個函式!支援if、while語句。 

du/df

du -h --max-depth=2  ## 以KB、MB、GB為單位顯示當前目錄大小,遞迴深度為2
df -h .              ## 顯示當前目錄所在磁碟總大小及使用情況