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


目录
  • 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 .              ## 显示当前目录所在磁盘总大小及使用情况

相关