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