linux查找文件的方法

1

文档编辑-grep
fold 返回 ispell
  功能说明:查找文件里符合条件的字符串。
  语  法:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]
  补充说明:grep指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为“-”,则grep指令会从标准输入设备读取数据。
  参  数:
  -a或--text 不要忽略二进制的数据。
  -A<显示列数>或--after-context=<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之后的内容。
  -b或--byte-offset 在显示符合范本样式的那一列之前,标示出该列第一个字符的位编号。
  -B<显示列数>或--before-context=<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前的内容。
  -c或--count 计算符合范本样式的列数。
  -C<显示列数>或--context=<显示列数>或-<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
  -d<进行动作>或--directories=<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
  -e<范本样式>或--regexp=<范本样式> 指定字符串做为查找文件内容的范本样式。
  -E或--extended-regexp 将范本样式为延伸的普通表示法来使用。
  -f<范本文件>或--file=<范本文件> 指定范本文件,其内容含有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每列一个范本样式。
  -F或--fixed-regexp 将范本样式视为固定字符串的列表。
  -G或--basic-regexp 将范本样式视为普通的表示法来使用。
  -h或--no-filename 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
  -H或--with-filename 在显示符合范本样式的那一列之前,表示该列所属的文件名称。
  -i或--ignore-case 忽略字符大小写的差别。
  -l或--file-with-matches 列出文件内容符合指定的范本样式的文件名称。
  -L或--files-without-match 列出文件内容不符合指定的范本样式的文件名称。
  -n或--line-number 在显示符合范本样式的那一列之前,标示出该列的列数编号。
  -q或--quiet或--silent 不显示任何信息。
  -r或--recursive 此参数的效果和指定“-d recurse”参数相同。
  -s或--no-messages 不显示错误信息。
  -v或--revert-match 反转查找。
  -V或--version 显示版本信息。
  -w或--word-regexp 只显示全字符合的列。
  -x或--line-regexp 只显示全列符合的列。
  -y 此参数的效果和指定“-i”参数相同。
  --help 在线帮助。


大家好! 我想在Linux下在当前目录以及子目录下查找某个文件, 应该写成 “find ./ -name ” 还是写成"find . -name " , 我想问的的是这里的"./"和"."的区别是什么 ? 都可以表示当前目录以及子目录的递归查询吗 ?

2

find 命令

语法:find 搜索路径 匹配表达式

功能:该命令用于在指定路径中查找符合条件的文件,搜索路径可以是多个目录,不同目录之间以空格分隔

(1)匹配表达式1

     -name filename:要查找的文件名。可以使用通配符“*”,“?”,但要用双引号将文件名引起来

          例子:【root@localhost tmp】# find  –name  “h*”  –print

          翻译:在当前目录下查找以h开头的文件

          例子:【root@localhost tmp】# find  /  –name  host  -print

          翻译:在整个文件系统中查找名为hosts的文件

     -user username:查找属于username用户的文件

          例子:【root@localhost tmp】# find /home –user user1 –print

          翻译:找出/home下属于用户user1的所有文件

     -group groupname:查找属于groupname组的文件

     -print:显示找到文件路径名

(2)匹配表达式2

     -exec 命令 {}:对找到的匹配文件,执行所列出的命令,而不询问用户是否执行这些命令,参数{} 由find找到当前的文件路径名取代,命令行末尾必须有“\;”。

例子:【root@localhost tmp】# find /home –user user1 –exec cat {}\;|more

翻译:找出/home下属于用户user1的所有文件并显示其内容

例子:【root@localhost tmp】# find /home –user user1 –exec rm –r {} \;

翻译:找出/home下属于用户user1的所有文件并删除

       -ok 命令{}:与-exec的用法相同,在执行命令之前询问用户是否要执行命令

(3)匹配表达式3

      -atime n:查找前n天访问过的文件(仅第n天这一天)

      -atime +n:查找前n天之前访问过的文件;-n则表示前n天之后

          例子:【root@localhost tmp】# find /home –atime +365 –print

          翻译:找出用户一年前访问过的文件

例子:【root@localhost tmp】# find $home –user user1 –atime +3 –exec rm –r {} \;

翻译:找出用户user1主目录下属于自己的前3天之前访问过文件并删除

(4)匹配表达式4

           -type filetype:指定查找的文件类型

filetype 可以是:b块文件;c字符设备文件;d目录文件;f一般文件

           例子:【root@localhost tmp】# find –type d –print

      翻译:查找当前目录下的所有的子目录

      例子:【root@localhost tmp】# find –type f –print

      翻译:查找当前目录下的所有的普通文件

(5)匹配表达式5

        -size Number和-size Numberc:按照文件大小进行查找。Numberc表示以字节为单位,否则以块(一般是512字节)为单位。-Number(或-Numberc)表示查找比该值小的文件,+Number(或-Numberc)表示查找比该值大的文件

例子:【root@localhost tmp】# find –size -10 –print

翻译:查找当前目录下所有长度小于10块的文件

例子:【root@localhost tmp】# find –size -10c –print | ls –l

翻译:查找当前目录下所有长度小于10字节的文件并以长格式显示文件信息

例子:【root@localhsot tmp】# find –size +100 –size -200 –exec ls –s {} \;

翻译:在当前目录下查找100~200块长的文件并显示文件的实际块数

grep 命令

语法:grep【参数】 查找模式 文件名 【文件名】

功能:grep命令用于在指定文件中查找与模式匹配的行,并将匹配的行显示在标准输出上。如果没有指定文件,则从标准输入中读取。当在多个文件中进行查找中,将在每一行输出之前加上文件名。在搜索的文件名中允许使用通配符。

参数:

         -c:只显示匹配行的行数

    -i:匹配时不区分大小写,默认情况下匹配时区分大小写

    -h:在多个文件中查找时,输出行前不显示文件名

    -n:在输出前加上匹配串所在行的行号(文件首行行号为1)

    -v:只显示不包含匹配串的行。

    -f filename:从指定文件中获取搜索模式,每行一个搜索模式项

例子:【roo@locallost user1】# grep printf*.c

翻译:在当前目录下的所有C文件中查找printf字符串

例子:【roo@locallost user1】# grep user1 /ect/password

翻译:将系统帐号中文件包含user1的行显示出来。

当搜索模式中包含空格是,要把搜索模式用单引号括起来。

例子:【root@localhso user1】# cat > dialog

      your name is:

      linux

      <Ctrl+d>

      【root@localhost user1】# grep ‘your name’dialog

       your name is:

在有多个搜索模式时,可以将这些搜索模式写入文件中,利用-f参数从文件中读取搜索模式项。

例子:【root@localhost user1】# cat > mode.txt

      name

      lin*

     <Ctrl+d>

     【root@localhost user1】# grep –f mode.txt dialog

      your name is:

      linux

 

3

grep、fgrep和egrep命令 

   这组命令以指定模式搜索文件,并通知用户在什么文件中搜索到与指定的模式匹配的字符串,并打印出所有包含该字符串的文本行,在该文本行的最前面是该行所在的文件名。grep命令一次只能搜索一个指定的模式;egrep命令检索扩展的正则表达式(包括表达式组和可选项);fgrep命令检索固定字符串,它不识别正则表达式,是快速搜索命令。 
语法: 

   grep [选项] [查找模式] [文件名1,文件名2,……] 

   egrep [选项] [查找模式] [文件名1,文件名2,……] 

   fgrep [选项] [查找模式] [文件名1,文件名2,……] 

   这组命令各选项的含义为: 

   - E 每个模式作为一个扩展的正则表达式对待。 

   - F 每个模式作为一组固定字符串对待(以新行分隔),而不作为正则表达式。 

   - b在输出的每一行前显示包含匹配字符串的行在文件中的字节偏移量。 

   - c 只显示匹配行的数量。 

   - i 比较时不区分大小写。 

   - h 在查找多个文件时,指示grep不要将文件名加入到输出之前。 

   - l 显示首次匹配串所在的文件名并用换行符将其隔开。当在某文件中多次出现匹配串时,不重复显示此文件名。 

   - n 在输出前加上匹配串所在行的行号(文件首行行号为1)。 

   - v 只显示不包含匹配串的行。 

   - x 只显示整行严格匹配的行。 

   - e expression 指定检索使用的模式。用于防止以“-”开头的模式被解释为命令选项。 

   - f expfile 从expfile文件中获取要搜索的模式,一个模式占一行。 

   对该组命令的使用还需注意以下方面: 

   在命令后键入搜索的模式,再键入要搜索的文件。其中,文件名列表中也可以使用特殊字符,如“*”等,用来生成文件名列表。如果想在搜索的模式中包含有空格的字符串,可以用单引号把要搜索的模式括起来,用来表明搜索的模式是由包含空格的字符串组成。否则,Shell将把空格认为是命令行参数的定界符,而grep命令将把搜索模式中的单词解释为文件名列表中的一部分。在下面的例子中,grep命令在文件example中搜索模式“text file”。 

   $ grep 'text file' example 

    用户可以在命令行上用Shell特殊字符来生成将要搜索的文件名列表。在下面的例子中,特殊字符“*”用来生成一个文件名列表,该列表包含当前目录下所有的文件。该命令将搜索出当前目录下所有文件中与模式匹配的行。 

   $ grep data * 

    特殊字符在搜索一组指定的文件时非常有用。例如,如果想搜索所有的C程序源文件中特定的模式,您可以用“*.c”来指定文件名列表。假设用户的 C程序中包含一些不必要的转向语句(goto语句),想要找到这些语句,可以用如下的命令来搜索并显示所有包含goto语句的代码行: 

   $ grep goto *.c 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值