统计当前目录及其子目录下面所有文件的行数:find . -name "*" | xargs wc -l 或 wc -l $(find . -name "*")
find命令
find [起始目录] 寻找条件 查找的字符串 操作
起始目录:
~ 表示$HOME目录
. 表示当前目录
/ 表示根目录
寻找条件(常用的):
-name:按照名字查找
-perm:安装权限查找
-prune:不再当前指定的目录下查找
-user:文件属主来查找
-group:文件所属组来查找
-nogroup:查找无有效所属组的文件
-nouser:查找无有效属主的文件
-type:按照文件类型查找
-type x 查找类型为 x 的文件,x 为下列字符之一:
b 块设备文件
c 字符设备文件
d 目录文件
p 命名管道(FIFO)
f 普通文件
l 符号链接文件(symbolic links)
s socket文件
-xtype x 与 -type 基本相同,但只查找符号链接文件。
当你想根据名字来查找一个目录时,命令为:find -name 目录名 -type d,也就是说-type d必须放在要查找的目录名的后面,如果放前面会报错。
寻找条件可以是一个用逻辑运算符 not、and、or 组成的复合条件。逻辑运 算符 and、or、not 的含义为:
(1) and:逻辑与,在命令中用“-a”表示,是系统缺省的选项,表示只有当所给的条 件都满足时,寻找条件才算满足。例如:
find –name ’tmp’ –xtype c -user ’inin’ 该命令寻找三个给定条件都满足的所有文件
(2) or:逻辑或,在命令中用“-o”表示。该运算符表示只要所给的条件中有一个满足 时,寻找条件就算满足。例如:
find –name ’tmp’ –o –name ’mina*’ 该命令查询文件名为’tmp’或是匹配’mina*’的所有文件。
(3) not:逻辑非,在命令中用“!”表示。该运算符表示查找不满足所给条件的文件 。例如:
find ! –name ’tmp’ 该命令查询文件名不是’tmp’的所有文件。
操作:
print:表示将结果输出到标准输出。
exec:对匹配的文件执行该参数所给出的shell命令。
形式为command {} \;,注意{}与\;之间有空格
ok:与exec作用相同,
区别在于,在执行命令之前,都会给出提示,让用户确认是否执行
find [起始目录] 寻找条件 查找的字符串 操作
起始目录:
~ 表示$HOME目录
. 表示当前目录
/ 表示根目录
寻找条件(常用的):
-name:按照名字查找
-perm:安装权限查找
-prune:不再当前指定的目录下查找
-user:文件属主来查找
-group:文件所属组来查找
-nogroup:查找无有效所属组的文件
-nouser:查找无有效属主的文件
-type:按照文件类型查找
-type x 查找类型为 x 的文件,x 为下列字符之一:
b 块设备文件
c 字符设备文件
d 目录文件
p 命名管道(FIFO)
f 普通文件
l 符号链接文件(symbolic links)
s socket文件
-xtype x 与 -type 基本相同,但只查找符号链接文件。
当你想根据名字来查找一个目录时,命令为:find -name 目录名 -type d,也就是说-type d必须放在要查找的目录名的后面,如果放前面会报错。
寻找条件可以是一个用逻辑运算符 not、and、or 组成的复合条件。逻辑运 算符 and、or、not 的含义为:
(1) and:逻辑与,在命令中用“-a”表示,是系统缺省的选项,表示只有当所给的条 件都满足时,寻找条件才算满足。例如:
find –name ’tmp’ –xtype c -user ’inin’ 该命令寻找三个给定条件都满足的所有文件
(2) or:逻辑或,在命令中用“-o”表示。该运算符表示只要所给的条件中有一个满足 时,寻找条件就算满足。例如:
find –name ’tmp’ –o –name ’mina*’ 该命令查询文件名为’tmp’或是匹配’mina*’的所有文件。
(3) not:逻辑非,在命令中用“!”表示。该运算符表示查找不满足所给条件的文件 。例如:
find ! –name ’tmp’ 该命令查询文件名不是’tmp’的所有文件。
操作:
print:表示将结果输出到标准输出。
exec:对匹配的文件执行该参数所给出的shell命令。
形式为command {} \;,注意{}与\;之间有空格
ok:与exec作用相同,
区别在于,在执行命令之前,都会给出提示,让用户确认是否执行
echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。
该命令的一般格式为: echo [ -n ] 字符串
其中选项n表示输出文字后不换行;字符串能加引号,也能不加引号。
功能说明:显示文字。
语 法:echo [-ne][字符串]或 echo [--help][--version]
补充说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号。
参 数:-n 不要在最后自动换行
-e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般
文字输出:
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\\ 插入\字符;
\nnn 插入nnn(八进制)所代表的ASCII字符;
该命令的一般格式为: echo [ -n ] 字符串
其中选项n表示输出文字后不换行;字符串能加引号,也能不加引号。
功能说明:显示文字。
语 法:echo [-ne][字符串]或 echo [--help][--version]
补充说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号。
参 数:-n 不要在最后自动换行
-e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般
文字输出:
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\\ 插入\字符;
\nnn 插入nnn(八进制)所代表的ASCII字符;
又遇到一个好东西:
cat > test.txt << EOF 创建文件 test.txt 输入 当输入 EOF时,结束。退出。
cat > test.txt << EOF 创建文件 test.txt 输入 当输入 EOF时,结束。退出。
vim替换
":substitute"命令可以对一个指定范围的区域执行替换操作. 它的
通用形式如下:
:[range]substitute/old/new/[flags]
该命令将由[range]指定的行中的字符串"old"替换为"new".
备注: 一般人都不会把:substitute完整拼出来, 使用它
的缩略形式":s"就可以了.
range中 "%"指定该命令将作用于所有行上.
":substitute"命令可以对一个指定范围的区域执行替换操作. 它的
通用形式如下:
:[range]substitute/old/new/[flags]
该命令将由[range]指定的行中的字符串"old"替换为"new".
备注: 一般人都不会把:substitute完整拼出来, 使用它
的缩略形式":s"就可以了.
range中 "%"指定该命令将作用于所有行上.
不指定一个范围的话, ":s"将只作用于当前行.
默认情况下, ":substitute"命令只会替换一行中第一次被发现的目
标字符串.
要改变一行中所有符合的目标字符串, 可以在命令后加"g"标志加以
修饰.
命令作用范围
:1,5s/this/that/g 作用于1到5行
默认情况下, ":substitute"命令只会替换一行中第一次被发现的目
标字符串.
要改变一行中所有符合的目标字符串, 可以在命令后加"g"标志加以
修饰.
命令作用范围
:1,5s/this/that/g 作用于1到5行
:54s/President/Fool/ 只作用于54行
:.,$s/yes/no/ 作用于当前行到最后一行,$表示最后一行。
根据条件替换
:g/pattern/s/old/new/gc
全局查找pattern,对于匹配pattern的行进行后面的替换,这里的pattern和old都可以使用正则表达式。
grep
查找文本中出现字符串1或字符串2
grep -E "aaa|bbb" ./* -r --color=auto(以彩色显示)
查找文本一行中同时出现的两个支付串
grep
"jin"
filename |
grep
"qi"
--color=auto
-n:显示查询出来的行在文件中的行号