Shell2-cat、find、xargs、tr、sort、uniq、split、切分文件名
cat (concatenate) 拼接
- 多个文件拼接
cat file1 file2
- 参数:
- -s: 压缩空白行,使用tr移除空白行
cat file | tr -s '\n'
- -n: 显示行号
- -s: 压缩空白行,使用tr移除空白行
find
- 参数:
- -print: '\n’作为分隔
- -print0: '\0’空字符作为分隔
-name
根据文件名搜索,-o
: 或条件-iregex
忽略大小的正则表达式!
结果取反/否定-maxdepth / -mindepth
最大/最小遍历目录深度-type
根据文件类型搜索- f:文件
- d:mul
-atime / -mtime / -ctime
(天)根据文件 访问/修改/变化 时间搜索(-amin / -mmin / -cmin
: 分 )-
:最近内+
:超过- 等于
-size
根据文件大小(b/块 c/字节 w/字 k M G
)- ‘-’: 小于
- ‘+’:大于
- 大于等于
-delete
删除匹配的文件-perm
根据文件权限搜索find . -perm 775
-user
根据文件所有权搜索-exec
根据find结果执行-exec
后的命令,find . -type f -name "*.txt" -exec printf "Text file:" %s\n" {} \;
-prune
跳过特定目录find . \( -name "dir_name" -prune \) -o \( -type f -print \)
xargs
- 多行输入转换成单行输出
cat file.txt | xargs
- 将单行输入转换成多行输出
cat file2.txt | xargs -n 2
tr
- 大小写转换
echo "HELLO WHO IS THIS" | tr 'A-Z' 'a-z'
-d
删除字符
echo "Hello 123 world 456" | tr -d '0-9'
-c
字符集补集-s
压缩重复字符
校验和与核实
- 校验和
md5sum filename > file_sum.md5
,核实md5sum -c file_sum.md5
- sha1sum 上同。
排序、单一
sort
-n
按数字:sort -n file.txt
-r
逆序-M
按月份-C
判断是否排序-o
对原文件排序sort file.txt -0 file.txt
uniq
- uniq消除重复内容
-u
显示唯一行-c
统计次数-d
找出重复行-s
忽略字符-w
最大比较字符
分割文件和数据
-b
分割大小:split -d 10k data.file
-d
数字后缀;-a
后缀长度- 前缀名:
split -b 10k data.file -d -a 4 split_file
-l
按行分割文件
切分文件名
var=hack.fun.book.txt
- 贪婪获取后缀:
echo ${var##*.}
- 非贪婪获取前缀:
echo ${var%.*}
Linux Shell Scripting Cookbook