查找文件的命令find
$find 起始目录 关系表达式
-name 文件名{ * 0到多个任意字符
?单个字符
[范围] 范围内单个字符}
-user 用户名
-uid 用户ID
-group 组
-gid 组ID
-perm 数字权限
-size 大小(默认以块为大小)
如何找到空文件或目录?
-empty 查找空目录/文件
-[a|c|m] (min|time) n 距离现在刚好n分钟/天
-[a|c|m] (min|time) -n 距离现在n分钟/天之内
-[a|c|m] (min|time) +n 距离现在n分钟/天之外
根据find的结果执行后续操作
现根据find命令获得文件查找的结果
再对结果进行一些列操作
例如 :
先查找文件file*
再对每个查找到的文件执行 ls -l命令
则可以使用一条语句完成
find . -name 'file[1-3]' -exec ls -l {} \;
find的-exec参数
find . -name 'file[1-3]'即根据限制查找到对应文件
后面的-execl ls -l {} \; 表示的是对每个结果执行命令
-execl 后面接的是需要执行的命令
之后的{}代表的是查找到的每一个结果
注意花括号和反斜杠之间有一个空格
shell内多个命令之间交互的通用解决方案
对于任意两个命令之间进行沟通操作的方法
即,shell的管道
假定现在有两个命令,分别有其对应的输入与输出
键盘stdin----输入----> 命令1 ----输出---->屏幕stdout
键盘stdin----输入----> 命令2 ----输出---->屏幕stdout
现在要把命令1的输出作为命令2的输入,这就需要借助管道。
对于上面的查找file[1-3]的批量执行操作,也可以使用管道表示为:
find . -name 'file[1-3]' | xargs ls -l
xargs即将find查找到的文件作为管道内传送的参数
例如,使用:
ls|wc -l
统计文件个数 wc 即word count 统计字符串个数
磁盘相关的命令
df命令:查看文件系统的磁盘空间使用
真正的文件系统即/dev/vda2
Mounted on 挂载
”大页“文件系统
命令du:du即disk usage的缩写,查看每个文件的磁盘空间使用情况
左侧数字为对应目录及目录下文件的大小,单位默认是kb
常用参数:
-a: 显示目录中所有文件以及文件夹大小
-h: 以 Kb、Mb 、Gb 等易读的单位显示大小
--si: 类似 -h 选项,但是计算是用 1000 为基数而不是1024
-s: 显示目录总大小
-d: 是 --max-depth=N 选项的简写,表示深入到第几层目录,超过指定层数目录则忽略
-c: 除了显示目录大小外,额外一行显示总占用量
--time: 显示每一个目录下最近修改文件的时间
-t: 是 --threshold=SIZE 的简写,过滤掉小于 SIZE 大小的文件以及目录
--exclude=PATTERN:过滤与 PATTERN 匹配的文件名或者目录名
文件查看命令cat
cat - concatenate files and print on the standard output
常用参数:
-b 将输出的非空行进行编号
文件----> cat ----> stdout
-E 显示换行符
-b 非空行进行编号
-E 显示换行符
-h 对所有行进行编号
-s 合并连续空行
day_3_2 Linux的命令之重定向和文本显示
查看文件类型
file命令
查看文件的类型
标准输入输出
stdin 标准输入 对应文件描述符0 设备对应键盘
stdout 标准输出 文件描述符1 设备对应屏幕(printf)
stderr 标准错误输出 文件描述符2 对应设备屏幕(printf)
stdout:
重定向
改变stdin,stdout, stderr对应的设备,改成一个文件。
例如重定向标准输出stdout
或者重定向stderr
./main 2> file1
cat file1
$this is stderr
重定向的补充
追加模式>>
例如cat file1
同时重定向
#include<stdio.h>
int main()
{
printf("this is stdout\n");
fprintf(stderr,"this is stderr\n");
return 0;
}
./main
./ main 1> file1
cat file1
./main 2> file1
cat file1
./main &> file1
cat file1
./main 1> file1 2> file2
深入理解cat命令
cat - concatenate files and print on the standard output
linux中输入EOF:按下Ctrl + D
如何创建一个空文件
方法一:
cat >filename 然后按下Ctrl + D
方法二:
echo -n > filename
方法三:
使用touch命令
touch filename
方法四:
vim filename 创建一个空文件
部分显示
head / tail
可以加-n参数 指定显示行数
或者使用管道
将最后使用的30条命令保存到文件中去
history|tail -n 30 > filename
单页显示
more - file perusal filter for crt viewing
less - opposite of more
例如more filename
less - opposite of more
快捷键:
q 退出
h 帮助
b 上一页
f 下一页
排序命令和去重命令
sort - sort lines of text files
cat file1
sort file1
cat file1
uniq file1
则会去除重复的内容
既排序又去重 使用管道
cat file1| uniq
字符统计
wc filename
man wc
wc - print newline, word, and byte counts for each file
从左到右 分别代表行数 单词数 以及总的字节数
wc -l 总的行数
wc -w 总的单词数
wc -c 总的字节数
汉字编码转换
中文:
GBK/GB2312 2 个bytes windows "烫" ----> cccc
utf-8 3 个 bytes unix/linux