cat
录屏
回放
xargs
find
tr
校验与核实md5sum
sort
uniq
临时文件命名与随机数
分割文件split
根据拓展文件名切分文件
rename
look
a
nd
roid 查字典是否拼写错误
利用并行进程加速执行
文件拼接
cat 1.txt 2.txt
摆脱多余空白行
$ cat -s ss.tst
或者tr $ cat ss.tst |tr -s '\n'
显示行号 -n
$ cat -n ss.tst
$ script -t 2> timing.log -a output.session
exit结束
$ scriptreplay timing.log output.session
单行->多行;多行->单行
stu2452@ubuntu:~/shell$ cat examle.txt
1
2 3 4 5
6
7
8 9
$ cat examle.txt | xargs
1 2 3 4 5 6 7 8 9
$ cat examle.txt | xargs -n3
1 2 3
4 5 6
7 8 9
指定分隔符 -d
$ echo "spamXspamXspamXspamXspam"|xargs -d X -n2
spam spam
spam spam
spam
xargs实现循环
$ ls "*.txt" | xargs -n1 -i{} mv {} {}.bak
结合find使用
$ find . -type f -name "*.bak" -print0 | xargs -0 rm -f
注:find的输出做xarg输入必须将-print0 与find结合使用,以字符null('\0')来分割输出
统计c 源码中有多少行
$ find . -type f -name "*.c" -print0 | xargs -0 wc -l
34 ./jsq.c
26 ./hws.c
24 ./1.c
29 ./ww
www.c
29 ./huiwenshu.c
142 total
-atime 访问时间
-mtime 内容修改时间
-ctime 元数据(权限,属主)改变
-7 7天内 -amin
7 7天前 -mmin
+7 超过7天 -cmin
比file1 修改时间更近
$ find . -type f -newer file1 -print
基于文件大小
$ find . -type f -size +2k
基于权限
$ find . -type f -perm 644
删除匹配文件
$ find . -type f -perm 644 -delete
结合 -exec
$ find . -type f -user root -exec chown dog {} \;
$ find . -type f -name "*.c" -exec cat {} \; > c_file.txt
大写转小写
#echo "HELLO WORLD" | tr 'A-Z' 'a-z'
加密,解密
$ echo "I am a student,Do you want to make friend with me?" | tr 'a-zA-Z' 'n-za-mN-ZA-M'
V nz n fghqrag,Qb lbh jnag gb znxr sevraq jvgu zr?
$ echo "V nz n fghqrag,Qb lbh jnag gb znxr sevraq jvgu zr?" | tr 'a-zA-Z' 'n-za-mN-ZA-M'
I am a student,Do you want to make friend with me?
制表符转空格
$ tr '\t' ' '
删除字符
$ cat 1_1.sh |tr -d 'echo'
压缩字符 -s
$ echo "GUn is not a linux." | tr -s ' '
GUn is not a linux.
擦除多余空格符
$ cat sum.txt | tr -s '\n'
字符类
[:alnum:] :字母数字
[:alpha:] :字母
[:blank:] :
all horizontal whitespace
[:cntrl:] :控制(非打印)字符
[:digit:] :数字
[:graph:] :图形字符
[:lower:] :小写
[:print:] :可打印字符
[:punct:] :标点符号
[:space:] :空白字符
[:upper:] :大写
[:xdigit:] :16进制字符
[=CHAR=]:
all characters which are equivalent to CHAR
$ echo "hello world" | tr '[:lower:]' '[:upper:]'
HELLO WORLD
$ md5sum 1.c > 1.c.md5
$ md5sum -c 1.c.md5
1.c: OK 没改变
对目录进行校验
$ md5deep -rl python ./python > dir_md5.txt
-r 使用递归方式
-l 使用相对路径,默认绝对路径
结合-exec 使用
$ find . type f -print0 | xargs -0 md5sum >> dir.txt
$ md5sum -c dir_md5.txt
按数字排序输出到文件
$ sort -n 1.txt 2.txt -o sorted.txt
-r 逆序
-M 按月份
-m 合并两个已经排序的文件
$ sort 1.txt 2.txt |uniq 排序不重行
-C 检查文件是否排序 echo $? 查看结果
-k 指定哪个键排序
$ sort -nrk 3 3.txt 按第三列按数字逆序
-c 统计重复行数目
-d 找出重复行
$ mktemp 创建临时文件
/tmp/tmp.FMbpewYwO5
$ mktemp -d 创建临时目录
/tmp/tmp.NC9FLSWhTM
$ mktemp -u 不创建文件,只取名字
/tmp/tmp.Cbf2Yy4DUu
$ mktemp test.XXX 根据模板创建文件名
test.7Hv
$ split -b 10k date.file 按字节
$ split -l 10 date.file 按行数,10行
$ split -b 10k date.file -d -a 4 split_file
split_file0001 split_file0002 ...
$ csplit server.log /SERVER/ -n 2 -s {*} -f server -b "%02d.log" ; rm server00.log
$ VAR=
www.dlmu.edu.cn
$ echo ${VAR}
$ echo ${VAR%.*}
$ echo ${VAR%%.*}
www
$ echo ${VAR#*.}
dlmu.edu.cn
$ echo ${VAR##*.}
cn
将文件名小写便大写
$ rename 'y/a-z/A-Z/' *
把MP3文件移到MP3目录
find -type f -name "*.mp3" -exec mv {} mp3/ \;
把所有文件空格换为字符'_'
$ find . -type f -exec rename 's/ /_/g' {} \;
#!/bin/bash
PIDARRAY=()
for file in 1.sh 2.sh 1_1.sh 2_1.sh 6.sh
do
md5sum $file &
PIDARRAY+=("$!")
done
wait ${PAIARRAY[@]}