UNIX常见命令索引 (echo,find,xargs)
echo
echo [OPTIONS] [STRING] - 打印STRING加上一个换行符
-n 不打印末尾的换行符
-e 对STRING进行转义后打印
-E 不对STRING进行转义直接打印
find
find [-H|L|P] [starting-point] [expression]
默认starting-point是当前目录"."。
-H/L/P: -H是不跟踪符号链接,-L是跟踪符号链接,-H是只在命令参数中跟踪符号链接
expression list: (每个expression前面可以用!符号表否定)
-name NAME 搜索内容精确匹配NAME的文件,NAME可以使用*通配符
-iname NAME 同上,大小写不敏感
-type TYPE 用TYPE对搜索到的文件类型加以限定,d为目录,f为文件
-empty 只搜索空目录或者文件
-perm 777 只搜索权限为777 的文件
-depth n 只搜索当前深度为n的目录
-user USER 只搜索owner是USER的文件
-print 对于每个符合条件的文件,打印文件名接换行符
-print0 对于每个符合条件的文件,打印文件名接\0符号
-regextype sed -regex ".*/REGEX" 对每个符合条件的文件,使用正则表达式REGEX对结果进行筛选(前面有.*/是为了匹配prefix directory)
-exec COMMAND \; 对每个符合条件的文件,执行COMMAND,注意需要COMMAND末尾需要加分号,必要时加\符号进行转义,使用符号{}对当前文件名进行引用。
-ok COMMAND \; 和-exec一样,但是在每个COMMAND执行前询问
sort
默认按照第一列作为关键字
-kN 按照第N列作为关键字来排序
-n 对关键字,比较其数字值而不是字符串值
-M 对关键字,比较其月份值而不是字符串值
-r 对关键字倒序排列
-u 对关键字排序后,删除重复行
-c 检查文件是否是排好序的,给出结果
-z 使用\0而不是\n来分割每行
-t 指定列分隔符(默认为空格)
-R 生成随机排列
-f 排序时忽略大小写
xargs
xargs [OPTIONS] [UTILITY [argument...]]
默认行为是读入标准输入字符流并用分隔符(默认包括空格,tab,换行符以及eof)进行切割,用切割得到的结果作为参数执行[UTILITY [argument...]] 指令。
遇到EOF则自动停止。
-0 对输入的字节流用\0而不是默认分割符进行切割 (和find -print0 配合使用)
-E EOFSTR 使用EOFSTR来作为结束符号
-I REPLSTR 不使用切割符切割,而是对输入的每一行调用UTILITY,使用REPLSTR代表每一行(通常REPLSTR是“{}”)。REPLSTR在UTILITY arguments中最多被替换五次,第六次及以上部分xargs不作替换。
与-0一起使用时,不使用换行符而是使用\0进行分割
-L NUMBER 不使用切割符切割,而是每读入NUMBER行以后,使用这NUMBER行的数据作为参数调用UTILITY
-n NUMBER 切割后对结果按照每NUMBER个进行分组,使用每组结果作为参数,调用UTILITY
-x 发现如果参数数量不够,立刻终止xargs
-t 执行UTILITY之前先把要执行的指令打印到stderr
-P maxprocs 并行模式,最多开启maxproc个进程执行
-p 对于每个指令向用户询问确认是否应当执行
-r 当输入不包含nonblank字符时,不执行命令 (默认情况下即使输入为空也会执行一次命令) [GNU Extension]