Linux 命令:find/grep/sed/awk/du/df
阿新 • • 發佈:2022-03-18
目錄
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 . ## 顯示當前目錄所在磁碟總大小及使用情況