ls命令

-R 递归(recursive)。该选项递归地列举所有目录(在当前目录之下)的内容。

-S 按大小排序

-s 在每个文件前面加上文件大小输出

-t 按时间排序

-F 文件类型(File type)。在每一个列举项目之后添加一个符号。这些符号包括: / 表明是一个目录; @ 表明是到其它文件的符号链接; * 表明是一个可执行文件

只显示目录

  1. ls -F | grep "/$"
1
2
3
4
5
bin/
build_dir/
config/
dl/
docs/
  1. ls -al | grep "^d"
1
2
3
4
5
6
drwxr-xr-x 17 cheng cheng   4096 6月   9 08:00 .
drwxr-xr-x 9 root root 4096 6月 8 20:53 ..
drwxr-xr-x 3 xxx xxx 4096 6月 9 07:13 bin
drwxr-xr-x 5 xxx xxx 4096 6月 9 07:12 build_dir
drwxr-xr-x 2 xxx xxx 4096 6月 8 20:55 config
drwxr-xr-x 2 xxx xxx 4096 6月 9 08:20 dl

只显示文件

  1. ls -al | grep "^-"
1
2
3
4
-rw-r--r--  1 cheng cheng    179 6月   8 20:55 BSDmakefile
-rw-rw-r-- 1 cheng cheng 162814 6月 9 07:11 .config
-rw-r--r-- 1 cheng cheng 576 6月 8 20:55 Config.in
-rw-rw-r-- 1 cheng cheng 161809 6月 9 07:10 .config.old

xargs

xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。

xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。

xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。

grep查找单一文件

grep "被查找的字符串" 文件名
例子:在当前目录里第一级文件夹中寻找包含指定字符串的.in文件
grep “thermcontact” */*.in

从文件内容查找与正则表达式匹配的行:
grep –e “正则表达式” 文件名

查找时不区分大小写:
grep –i "被查找的字符串" 文件名

查找匹配的行数:
grep -c "被查找的字符串" 文件名

从文件内容查找不匹配指定字符串的行:
grep –v "被查找的字符串" 文件名

find+ xargs+ grep 查找制定目录文件

从根目录开始查找所有扩展名为.log的文本文件,并找出包含”ERROR”的行
find / -type f -name "\*.log" | xargs grep "ERROR"

从当前目录开始查找所有扩展名为.in的文本文件,并找出包含”thermcontact”的行
find . -name "\*.in" | xargs grep "thermcontact"

批量替换

替换server.xml文件中的”2020”为”8008”
sed -i 's/2020/8080/g' ./conf/server.xml

批量替换,替换server.xml文件中的”2020”为”8008”,将结果输出到result1.xml
sed -i 's/2020/8080/g' ./conf/server.xml > result1.xml

查找文件名中不包含指定字符串文件

1
find . ! -name '*string*'

打印包含指定字符串文件的路径

1
find public -type f |xargs grep -nl 'string'

find查找时排除指定目录

1
find . -type f ! -path "./source*" ! -path "./db*"

Windows查找

findstr.exe /s /i "string" *.*
上面的命令表示,当前目录以及当前目录的所有子目录下的所有文件中查找"string"这个字符串。

*.*表示所有类型的文件。

/s 表示当前目录以及所有子目录

/i 表示不区分大小写