用cat进行拼接
录制与回放终端对话
文件查找与文件列表
将命令输出作为命令参数
用tr进行转换
校验和与核实
排序。单一与重复
临时文件命名与随机数
分割文件与数据
根据扩展名切分文件名
用rename和mv批量重命名文件
拼写检查与词典操作
交互输入自动化
用cat进行拼接
(cat 通常用于读取,显示或拼接文件内容)
读取文件
$cat file1 file2 …
root@lilongiu-VirtualBox:~/study/shell# cat 1.txt 2.txt
1
2
3
fsfsfs
从标准输入中读取(使用管道操作符)
OUTPUT_FROM_SOME COMMANDS | cat
echo ‘hello’ | cat -i.txt
root@lilongiu-VirtualBox:~/study/shell# echo 'pinjie' | cat - 1.txt
pinjie
1
2
3
压缩空白行
$cat -s file
tr 移除空白行(将连续多个’\n’字符压缩成单个’\n’(换行符))
root@lilongiu-VirtualBox:~/study/shell# cat 1.txt
1
2
3
root@lilongiu-VirtualBox:~/study/shell# cat -s 1.txt
1
2
3
root@lilongiu-VirtualBox:~/study/shell# cat 1.txt | tr -s '\n'
1
2
3
将制表符显示为 ^|
$cat -T file1
root@lilongiu-VirtualBox:~/study/shell# cat 1.txt
1
2
3
root@lilongiu-VirtualBox:~/study/shell# cat -T 1.txt
^I1
^I2
3
行号
$cat -n file
root@lilongiu-VirtualBox:~/study/shell# cat -n 1.txt
1 1
2 2
3 3
root@lilongiu
录制与回放终端会话
script -t 2> timing.log -a output.session(timing.log用于存放时序信息,output.session存储命令输入信息)
scriptreplay timing.log output.session (回放命令)
广播视频会话
打开两个终端(两个终端进入同一个目录)
step1:终端1输入 mkfifo scriptfifo
step2:终端2输入 cat scriptfifo
step3:终端3输入 script -f scriptfifo
然后通过在终端一输入命令 在终端二就可以实时观看了(终端二可以是不同的电脑,通过ssh登陆)
文件查找与文件列表
列出目录下所有所有的文件和文件夹
find base_path
find /home/lilongiu/study/rk (使用绝对路径) 或者相对路径 find . (当前路径的全部文件或文件夹)
find . -print
根据文件名或正则表达式匹配搜索
查找文件
find path -name “*.txt” -print #(print可也省略)
查找当前文件夹下所有的txt文件
```bash
find . -name "*.txt"
**-iname (表示忽略大小写)**
**匹配多种文件 采用OR条件**
```bash
find . \( -name "*.txt" -o -name "*.sh" \) -print
-path 的参数可以使用通配符来匹配文件路径或文件 -name只能匹配文件
find /home -path “*.lib” -print #将会打印home目录下所有包含字母lib的文件名和文件夹。
-regex的参数和-path的类似,只不过-regex是基于正则表达式来匹配文件路径的
find . -regex ".*\(\.py\|\.sh\)$"
-iregex 表示忽略大小写
基于目录的深度搜索
-maxdepth 查找最大深度 1 为当前目录查找
-mindepth 查找最小深度 向下两级时 设置为2
find . -maxdepth 1 -type f -print #查找当前目录下的所有文件
find . -maxdepth 1 -type d -print #查找当前目录下的所有文件夹
find . -maxdepth 1 #查找当前目录下的所有文件夹和文件
find . -mindepth 2 -type -f -printf #查找当前目录下下一级的所有文件
lilongiu@lilongiu-VirtualBox:~/study/shell$ find . -mindepth 2 -type d
./userdata/model
./lib1/model
./lib2/model
根据文件类型搜索
-type 可以对文件搜索进行过滤
列出所有的目录
find . -type -d -print
只列出普通文件
find . -type f -print
值列出符号链接
find . -type l -print
相关参数解释
f 普通文件
l 符号链接
d 目录
c 字符设备
b 块设备
s 套接字
p Fifo
根据文件时间进行搜索
1 访问时间 -atime 用户最后一次访问时间
2 修改时间 -mtime 文件内容最后一次被修改时间
3 变化时间 -ctime 文件元数据(例如权限)最后一次修改时间
时间单位是天
find . -type f -atime -7 -print #七天内访问过的文件
find . -type f -atime 7 -printf #刚好七天前访问过的文件
find , -type f -atime +7 -printf #超过七天未访问过的文件
同理 -mtime -ctime 可以进行同样的查询
基于分钟的查询
-amin -cmin -mmin
基于文件大小的搜索
find . -type f -size -2k #查找小于2k的文件
find . -type f -size +2k #查找大于2k的文件
find . -type f -size 2k #查找等于2k的文件
其他查找单位
b 块(512字节)
c 字节
w 字
k 千字节
M兆字节
G 吉字节
删除匹配的文件
find . -type f -name “*.txt” -delete
基于文件权限和所有权的匹配
find . -type f -perm 644 -print #打印权限为644的文件
find . -type f -name “*.php” | -perm 644 -print # 打印没有644权限的php文件
find . -type f -user lilong -prinf #打印出用户lilong所有的文件
结合find执行命令或动作
find . -type -user root -exrc chown slynux{} ;
find . -type f -name “*.c” -exec cat {} ;>all_c_files.txt
finf . -type f -mtime +10 -name “*.txt” -exec cp {} OLD ;
#将十天前修改过的文件复制到目录OLD
-exec 结合printf
find . -typr f -name “*.txt” -exec printf “txt file: %s\n” {} ;
让find跳过特定目录
find . ( -name “.git” -prune ) -o ( -type f -print )