cat的用法

cat可以读取一个文件的内容:

cat file.txt

也可以读取数个文件拼接在一起显示:

cat file1.txt file2.txt file3.txt

cat还可以从标准输入里进行读取:

echo "来自标准输入的文本" | cat

如果想将标准输入和其他文件拼接在一起显示:

echo "来自标准输入的文本" | cat - file.txt

这里用“-”来表示标准输入。

-s 压缩文本中的空白行

-T 显示制表符

-n 显示行号

find的用法

最基本的用法

$ find path

path可以是任何路径,find会从该路径开始向下搜索。

.是当前目录,..是父目录。

各种匹配搜索

根据文件名

$ find path -name "*.txt"

使用-iname可以忽略大小写。

根据文件路径

$ find path -path "*example*"

这样的话会把路径中包含example的所有文件都打印出来,不论是文件夹名还是文件名。

-path使用的是通配符匹配,这和-regex的正则表达式还是有区别的。

$ find path -regex ".*\(\.jpg\)$"

如果你有多个条件,可以使用-o参数

$ find . \( -name "*.txt" -o -name "*.sh"\)

如果你想排除某个条件,可以使用!

$ find . ! -name "*.txt"

find默认是遍历搜索指定目录及其子目录,你可以指定搜索的深度

$ find . -maxdepth 1 -name "*.txt"
$ find . -mindepth 1 -name "*.txt"

maxdepth指定了最大深度,所以-maxdepth 1 会让find在当前目录搜索,mindepth指定了最小深度,所以-mindepth 1 会让find排除当前目录。当然这两个参数的值只能是正整数。

如果你想指定文件类型

$ find . -type d

文件类型参数有如下几种

f 普通文件

d 目录

l 符号链接

c 字符设备

b 块设备

s 套接字

p Fifo

根据时间进行搜索

$ find . -type f -atime 7

-atime 表示访问时间 ,7 表示7天,这是搜索7天前访问的文件,如果是+7,就是被访问超过7天的文件,-7表示7天内访问的文件

类似的参数还有-mtime 修改时间,-ctime 改变时间,前者指的是文件内容的修改,后者指的是文件元数据的修改(metadata,权限,所有者)。

如果要以分钟为单位搜索,还有-amin,-mmin,-cmin。

根据大小搜索

$ find . -type f -size 2M

搜索大小等于2M的文件

文件大小的单位

c 字节

w 2字节

b 512字节

k 1024字节

M 1024k字节

G 1024M字节

+2M 大于2M的文件,-2M小于2M的文件

搜索并删除文件

-delete参数

$ find . -type f -name "delete.txt" -delete

根据权限搜索文件

-perm参数

$ find . -type f -perm 777

根据用户所有权搜索

-user参数

$ find . -type f -user root