cat

cat 命令常用读取,显示或者拼接文件内容,不过cat的魅力不仅如此,接下来你将会看到关于cat的基本和高级用法 。

最简单的用法

cat file.txt

This is file.txt

打印多个文件的内容

cat file1 file2 file3

This is file1.txt

This is file2.txt

This is file3.txt

摆脱多余的空行

cat file1.txt

This is file1.txt

aaaaa

bbbbb

用法 cat -s file1 # 有多处连续的空白行会只显示一处

This is file1.txt

aaaaa

bbbbb

4.显示行号

cat -n file

cat -n line.txt

1 lin1

2 lin2

3 lin3

cat 重定向,在Linux shell 脚本中经常会见到的

<

(内容)

EOF

# 注意 EOF 是“end of file”,表示文本结束符,在这里完全可以使用其他字符替代例如:END FOE 等等

例子:

cat <>file.txt

username=wangwu

age=19

END

结果: # 在以前文件的基础上追加了两行信息,亦可以使用 > 清空原文件后再添加

This is file1.txt

aaaaa

bbbbb

username=wangwu

age=19

find

find 几乎是Linux 中最棒的工具之一,它通常用于文件的查找,find 命令工作方式如下:沿着文件层次结构向下遍历,匹配符合条件的文件,并执行相应操作。

1. 列出当前目录及子目录下所有的文件和文件夹

find path

eg: find . -print

# 在Linux中 . 表示当前目录, .. 表示父级目录,print 指明打印出匹配的文件名(路径),不加print 也同样会打印

2. 根据文件名或正则表达式进行搜索

(1) -name

eg: find . -name *.sh

# 表示查找当前目录下以 sh 结尾的文件, * 表示通配符

补充: -iname 可以忽略大小写字母搜素

(2) -path

find / -path "*/test/*"

结果:

/usr/lib64/python2.6/site-packages/OpenSSL/test/util.pyc

/usr/lib64/python2.6/site-packages/OpenSSL/test/test_ssl.pyc

/usr/lib64/python2.6/site-packages/OpenSSL/test/test_crypto.pyc

/usr/lib64/python2.6/site-packages/OpenSSL/test/__init__.py

#-name 是以给定的文件名 进行匹配,-path 是将文件路径作为一个整体进行匹配

(3) -regex

find . -regex ".*sh$"

# 利用正则匹配以sh结尾的文件,同样 -iregex 可以忽略大小写

3. 否定参数

find . ! -name "*.sh"

# 匹配当前目录下不是以 ,sh 结尾的文件

4. 根据文件类型搜索

Linux 系统一切皆文件 ,所以我们就可以利用文件类型来对文件进行搜索

find . -type d # 列出当前目录下所有目录

find -type f # 列出当前目录下所有文件

5. 根据文件时间进行搜索

# 找出在7天内被访问过的文件

find . -type f -atime -7

# 找出在刚好7天前被访问过的文件

find . -type f -atime -7

# 找出访问时间超过7天的文件

find . -type f -atime +7

atime 最后一次访问时间,

ctime 最后一次状态修改时间

mtime 最后一次内容修改时间

# 注意这些都是基于时间的参数并且计量单位都是天

6. 基于文件大小进行搜索

# 查找大于2kb 的文件

find . -type f -size +2k

# 查找小于2kb 的文件

find . -type f -size -2k

7. 删除匹配的文件

find . -type f -name ".swp" -delete

# 删除当前目录下所有 .swp 文件

8. 根据文件的所有权进行搜索

find . -type f -user root

# 打印root用户拥有的所有文件

9. 利用find执行命令或动作

find 命令可以借助选项-exec 与其他命令相结合。而 -exec 也是find最为强大的特性之一

eg: find . -type f -user root -name "*.txt" -exec cat {} \;

# 查找出当前目录下所有 .txt 结尾的文件并使用cat查看,{}是一个与-exec 搭配使用的特殊字符串,对于每一个匹配的字符串 {} 都会替换成对应的文件名,例如上面的就可以解释为 find 先找到 root 用户拥有的 test1.txt 和 test2.txt 然后 cat {} 就会被解析成cat test1,txt 和 cat test2.txt

上面列举的是常见用法,还有一些用法尚未解锁,待我修成正果后再来补充。。。

Logo

更多推荐