linux查找文件内容
ls命令
-R 递归(recursive)。该选项递归地列举所有目录(在当前目录之下)的内容。
-S 按大小排序
-s 在每个文件前面加上文件大小输出
-t 按时间排序
-F 文件类型(File type)。在每一个列举项目之后添加一个符号。这些符号包括: / 表明是一个目录; @ 表明是到其它文件的符号链接; * 表明是一个可执行文件
只显示目录
ls -F | grep "/$"
1 | bin/ |
ls -al | grep "^d"
1 | drwxr-xr-x 17 cheng cheng 4096 6月 9 08:00 . |
只显示文件
ls -al | grep "^-"
1 | -rw-r--r-- 1 cheng cheng 179 6月 8 20:55 BSDmakefile |
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
表示不区分大小写