find

find用于在指定目录下查找文件。任何位于参数前的字符串都被视为欲查找的目录名。其支持按名称查找、按正则表达式查找、按文件大小查找等多种查找方式。使用格式如下:

find path [option] [pattern]

我们通常使用文件名称进行查找:

find path -name [pattern]

例如要查找当前目录下包含’extrinsics’的文件名,这里使用正则表达式进行匹配:

find . -name ‘*_extrinsics’

获取当前目录下包含’extrinsics’的文件名,打印文件名称,并进行单独处理:

for file in $(find . -name '*_extrinsics'); do
echo 'file: '$file
done

grep

grep命令用与从文本或管道数据流中查找数据。使用格式如下:

grep [option] [pattern] file

最简单的使用,在文件中查找某个字符串,并打印匹配的行:

grep ‘test’ file

几个常用的参数:

  • -n 输出行号
  • -i 忽略大小写
  • -r 递归查找
  • -l 列出文件内容符合要求的文件名称

从管道数据流中读取数据并进行查找:

cat file | grep ‘test’

查找文件夹中包含test字符串的文件名:

grep -rl ‘test’ ./dir

从多个文件中查找数据:

find . -name ‘test*’ | xargs grep ‘test’

xargs

xargs用于将标准输入转换成命令行输入。标准格式如下:

xargs [option] [command]

例如创建名为test的文件夹:

echo ‘test’ | xargs mkdir (效果和 mkidr test 一样)

几个常用参数:

  • -d xargs默认使用换行符和空格作为分隔符,将标准输入分解成一个个命令行参数,-d可以指定这个分隔符
echo 'one two three' | xargs mkdir
创建one、two、three三个文件夹
echo 'one two three' | xargs -d '\t' mkdir
创建'one two three'一个文件夹

xargs特别适合find命令,用于查找某些文件中的字符串:

find . -name ‘*.txt’ | xargs grep ‘test’

上面命令用于查找当前目录下的txt文件中是否包含’test’字符串。

awk

awk是一个强大的文本分析工具,以文件的一行为处理单位,每接收一行,然后执行相应的命令来处理文本。标准格式如下:

awk [-F filed-separator] [command] file

其中-F表示选择分隔符,默认为空格。
awk的工作流程:读入有’\n’换行符分割的一条记录,然后按照指定分隔符划分,填充域。$0表示所有域、1表示第一个域、1表示第一个域、n表示第n个域。
例如显示/etc/passwd中的所有账号:

cat /etc/passwd | awk -F ‘:’ ‘{print $1}’

获取某个进程pid:

ps aux | grep $name | grep -v grep | awk ‘{print $2}’

sed

sed是一款强大的流式文本编辑器,由于sed以行为单位进行编辑,因此也称为行编辑器。
sed由标准输入读取编辑文件,读入一行放到模式空间"pattern space",然后根据指令对空间中的字符串进行处理,把结果输出到标准输出,
并清空模式空间。不断重复上述过程,知道读取完文件。
sed可以配合正则表达式使用,对文件内容进行替换、删除、增加等功能,用来自动编辑文件,功能十分强大。
标准格式如下:

sed [option] [command] file

常用选项:

  • -i 直接修改读取的文件内容,而不是输出到屏幕

常用的命令:

  • s 替换字符串,$s/Regexp/Replacement/Flags,分隔符’/'可以用其他特殊字符代替,用Replacement替换掉匹配字符串。

把test文件中所有aaa字符串替换成bbb字符串:

sed -i ‘s/aaa/bbb/g’ test.txt

把test文件夹中所有含aaa字符串内容的文件替换成bbb字符串:

sed -i 's/aaa/bbb/g' `grep -rl 'aaa' ./test`
or
grep -rl 'aaa' ./test | xargs sed -i 's/aaa/bbb/g'

上述这个样例曾帮我在一个项目中快速进行日志工具的替换,当时需要替换日志工具,需要对宏进行替换,用sed来出来真的很方便。

参考