2019独角兽企业重金招聘Python工程师标准>>>
find [path...] [options] [action] 默认选项为 在当前目录查找所有文件并显示
-L 跟随符号链接查找文件
1 根据文件名查找
-name FILENAME 支持glob
-iname FILENAME 不区分大小写 支持glob
-regex PATTERN 正则表达式文件名匹配
2 根据用户查找
-user USERNAME 根据属主查找
-group GROUPNAME 根据属组查找
-uid UID 根据UID查找
-gid GID 根据GID查找
-nouser 查找没有属主的文件
-nogroup 查找没有属组的文件
3 根据文件属性查找
-type [fdcblps] 查找指定类型的文件
-size [+|-]N
+Nk 查找SIZE大于Nk的文件 >
-NM 查找SIZE小于Mk的文件 <
NG 查找SIZE属于[(N-1)G, NG]的文件
4 根据时间查找
-
-
0代表当天 N代表查找N~N+1天前的文件 [N, N+1]
-N代表 查找N天前到现在的文件 <=N
+N代表 查找N+1天前的所有文件 >=N+1
-newer FILENAME 查找比FILENAME还要新的文件
5 根据权限查找
-perm [/|-]MODE
MODE 精确匹配权限查找
/MODE ugo任意一位匹配就满足条件
-MODE 文件权限完全包含此权限就匹配
6 组合查找
-a 与
-o 或
-not 非
7 action
-print 显示查找到的文件
-ls 类似ls -l一样显示文件详细信息
-ok CMD {} \; 每一次操作都需要用户确认的执行命令
-exec CMD {} \; 执行命令 不询问
一些例子
1 查找当前系统上没有属主或属组且最近1天内曾被访问过的文件并将其属主属组均修改为root
find / \( -nouser -o -nogroup \) -a -atime -1 -exec chown root:root {} \;
2 查找/var目录下大于1k的文件并显示详细信息
find /etc -size +1k -ls
3 查找/etc目录下所有用户都没有写权限的文件
grep是一个精确查找文本的命令
egrep = grep -e 扩展正则
-i 忽略大小写
-v 反向查找 查找不匹配的
-AN 查找到的行与下面N行合并
-BN 查找到的行与上面N行合并
-CN 查找到的行与上面和下面N行合并
sed [options] [script] [file...] 文本处理流编辑器
-n 静默模式
-i 修改原文件
-f 从文件读入script
-e 同时执行多个操作 或者使用 ' 键入一系列命令
script组成: AddressCommand
Address
$表示最后一行 +N 匹配N行
StartLine[,Endline] 或使用正则 /RegExp/[,RegExp/]
Command
! 反命令 !p 把没有匹配到的打印出来
y/OLD/NEW 类似tr命令的逐个替换
s/pattern/string/[gi] 查找并替换 也可使用其他分隔符避免转义字符
a\string 在指定行后面追加新行string
i\string 在指定行前面添加新行string
r FILE 将指定的文件的内容追加到符合条件的后面
w FILE 将匹配内容另存至指定文件中 [>重定向是屏幕内容]
d删除 p显示 q退出 l显示行尾$
& 匹配到的整串 \(..\) \1, \2 分组模式 = 当前行号
多行处理Command
n 下一行 N 这一行和下一行合并处理
DP和N配合多行中只处理第一行[多行删除/打印]
跳转命令
b 跳转至:label 默认EOF
t 只有成功才跳转 :label
awk [options] 'PATTERN { action }' [file...] 文本报告生成器
-f 从文件读入script
-F 指定输入分割符
-v 'VAR DECLARE'
PATTERN
Expression[, Expression] 表达式
Expression可用符号
<, <=, >, >=, ==, !=
~ 匹配 !~ 不匹配 in 范围
/RegExp/ 正则
VAR
$0 整行 $1, $2, ... 列
FS 输入分隔符 OFS 输出分隔符
RS 输入行分隔符 ORS 输出行分隔符
NR 当前处理行数 多文件统计计数
FNR 当前处理行数 单个文件计数
NF 当前行有多少字段 $NF 最后一个字段
FILENAME 所处理的文件名
ARGC ARGV 命令行参数
ENVIRON 当前shell环境变量及其值的关联数组
ACTION
BEGIN/END 处理之前/后 执行一次
'BEGIN{action}'
'END{action}'
printf 格式化打印
pirnt 简单打印
ACTION中还能使用大量C风格控制语句以及内置函数
例子
awk -F: '{printf "%5s %i\n",$1,$3}' /etc/passwd
注
linux命令中的各类正则表达式有区别 [bre/ere]等
许多字符需要加\进行转义
find /etc -not -perm /222