Linux文件查找查看
文件类型区分
即文件权限的第一个,如:-rw-r--r--,则该文件属于普通文件
- 普通文件
d 目录
c 字符设备文件,终端就是一个典型
b 块设备文件,u盘,硬盘
s 套接字文件,本机和其他主机进程和进程通信
p 管道,本机进程和进程间通信
l 符号链接文件,小写L(软连接)
find -- 查找文件
可以使用通配符:*,?,[],{}
# 语法
find 路径 选项 [-exec -ok 执行操作 {} \];
-exec属于可选项,针对查找到的文件执行某种操作,如使用-exec,则最后的{} \;属于固定写法
-ok配合-exec使用,不加直接执行,加上则是对查找到的每个文件执行动作前先询问
# 选项
-name 名称
-type 类型
-size 大小
-user 属主
-perm 权限
-atime 访问时间,单位/天
-mtime 内容修改时间,单位/天
-ctime 属性修改时间,单位/天
-amin 访问时间,单位/分钟
-cmin 属性修改时间,单位/分钟
-mmin 内容修改时间,单位/分钟
# 示例
find /tmp/ -type f # 查找/tmp目录下所有的普通文件
find / -size +1G # 全盘查找大于1G的文件
find / -perm -4000 # 全盘查找有suid权限的文件
find /tmp -mtime 1 # 查找/tmp目录下1天前修改过内容的文件
# 可以使用条件判断,默认and,多个条件联合使用
# -o 等同 or ,! 等同 not
find / -size +1G -o -name "*.iso" # 查找/下大于1G或者名称为*.iso的文件
find /tmp ! -type d # 查找/tmp下非目录文件
# 对查找的文件执行删除操作
find / -name a.txt -exec rm -rf {} \;
cat -- 查看文件内容,查看小文件时使用
# 选项
-n # 查看文件时打印行号
-b # 和 -n 相似,只不过对于空白行不编号
-s # 当遇到有连续两行以上的空白行,就代换为一行的空白行
head -- 查看文件的开头部分
head /etc/passwd # 默认查看文件的前10行
head -3 /etc/passwd # 只查看文件的前3行
tail -- 查看文件的结尾部分
tail /etc/passwd # 默认查看文件的末尾10行
tail -2 /etc/passwd # 只查看文件的末尾2行
tail -f uwsgi.log # 动态查看文件末尾10行,实时更新
wc -- 过滤、统计文件内容
wc -l # 统计行数
wc -c # 统计字符数
sort -- 排序
默认情况下按每行的第一个字符进行排序
# 选项
-n # 按照数值升序排列,默认是字符
-t # 指定分隔符 一般和-k结合使用
-k # 使用分隔符分隔的第几列
-r # 降序排列,默认升序
-u # 去掉连续的重复行
-R # 随机排序
# 示例,指定 : 为分隔符,以第2列的数值从大到小排序
cat test.txt |sort -t: -k2 -rn
uniq -- 去重,去掉连续的重复行
该命令只会统计连续重复的行,有空行或其它行分隔,不算重复项
# 选项
-c # 去重后统计重复的行数,将数字显示在每行的前面
-u # 不打印连续重复的行,即只打印出现过一次的行
-d # 只显示连续重复的行
cut -- 列截取
用于显示每行从开头算起 num1 到 num2 的文字
# 选项
-c # 以字符为单位进行分割。
-d # 自定义分隔符,默认为制表符。
-f # 与-d一起使用,指定显示哪个区域。
注1:使用空格作为分隔符,' ' 引号内空一格就好了,只能设置一个,cut只允许间隔符是一个字符,多个空格连续,会以每个空格为一列截取;
注2:cut命令默认的分隔符就是制表符,不是空格,如果使用默认分隔,则不适用-d选项,直接-f指定截取列即可
# 示例
# 以字符为单位,截取第3列
cut -c3 test.txt
# 以 : 为分隔符,截取第1,3-5列
cut -d':' -f 1,3-5 /etc/passwd
tr -- 转换或删除文件中的字符
# 语法
tr [选项] [指定字符] [替换字符]
# 选项
-s # 替换重复的字符,用指定的字符来替换对应的重复字符
# 示例,连续字符去重,跨字符或跨行不算重复:
echo "aaabbbaacccfddd" | tr -s [abcdf] # 结果:abacfd
# 删除空行,这里不行使用-d选项,-d选项删除回车符后所有行都会并一行了
cat b.txt | tr -s ["\n"]
-d # 删除字符,除指定的所有字符,不转换
# 示例,删除全部大小写字母
echo "a12HJ13fdaADff" | tr -d "[a-z][A-Z]"
# 删除指定字母
echo "a1213fdasf" | tr -d [adfs]
-t # 字符替换,指定字符用对应位置的替换字符进行替换,一般缺省为-t
# 示例
echo 'a1b2c3' | tr -t [abc] [efg] # 结果:e1f2g3
# 全部字母小写改大写,反之亦然
echo "Hello World I Love You" |tr -t [a-z] [A-Z] # 结果:HELLO WORLD I LOVE YOU
-c # 字符补集替换,用替换字符替换指定字符中没有包含的字符
# 示例
# cat test.txt
Monday 09:00
Tuesday 09:10
Wednesday 10:11
Thursday 11:30
Friday 08:00
Saturday 07:40
Sunday 10:00
# 先将除字母外的所有字符都使用-c替换成换行符,然后使用-s删除空行
# cat test.txt|tr -cs "[a-z][A-Z]" "\n"
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
# 统计一个字符串的某个字符出现次数,-cd一起使用,只保留.其余字符全部删除
# echo 172.16.30.141|tr -cd .|wc -c
3
column -- 输出对齐
# 选项
-t # 将输出以空格对齐
-s # 指定分隔符,实际是去掉了这个分隔符再输出以空格排列
# 示例:mount的输出是很杂乱的,这里查看前10行
# mount | head
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,size=485868k,nr_inodes=121467,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
# 使用column对齐后
# mount | head |column -t
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,size=485868k,nr_inodes=121467,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
more -- 分页查看
# 类似于cat,但是会分页查看文件,通过指令翻页,与more类似的还有less命令
# 选项
-num # 一屏显示的行数,示例:more -5 /etc/passwd,结果是每5行一屏
+num # 从第 num 行开始显示
-s # 如有连续两行以上空白行则以一行空白行显示
-p # 不以滚动的方式显示每一页,而是先清除屏幕后再显示内容
-f # 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)
# 处于more命令查看时的操作命令
Enter # 向下n行,需要定义。默认为1行
Ctrl+F # 向下滚动一屏
空格键 # 向下滚动一屏
Ctrl+B # 返回上一屏
= # 输出当前行的行号(一屏的最下面那行)
:f # 输出文件名和当前行的行号
V # 调用vi编辑器
!命令 # 调用Shell,并执行命令
q # 退出more