linux命令搜索路径 linux中搜索

Linux find 命令详解 find 命令的基本结构如下:
find [paths] [expression] [actions]
find 命令接受一个或多个 路径 ( paths )作为搜索范围linux命令搜索路径,并在该路径下 递归 地搜索 。即检索完指定的目录后 , 还会对该目录下的子目录进行检索,以及子目录下的子目录 。。。直到到达目录树底部 。
默认情况下(不带任何搜索条件) , find 命令会返回指定目录下的 所有文件,所以常常需要通过特定的expression对结果进行 筛选。
find 命令默认的action是将所有检索结果打印至标准输出 。可以通过自定义action , 让 find 命令对搜索到的结果执行特定的操作 。
这里先不做详细解释 , 简单地测试下 find 命令:
find 命令中的-name选项可以根据文件名称进行检索( 区分大小写 ) 。如需要忽略文件名中的大小写,可以使用-iname选项 。
-name和-iname两个选项都支持wildcards。如:
find /usr -name '*.txt'查找 /usr 目录下所有文件名以.txt结尾的文件
find /usr -name '????'查找 /usr 目录下所有文件名刚好为 4 个字符的文件
有些时候,linux命令搜索路径你需要在搜索时匹配某个文件或目录的 完整路径,而不仅仅是匹配文件名 。可以使用-path或-ipath选项 。
如查找 /usr 下所有文件名以.txt结尾的文件或目录 , 且该文件的父目录必须是src。可以使用以下命令:
find /usr -path '*/src/*.txt'
如果只想搜索得到文件 或 目录 , 即不想它们同时出现在结果中 。可以使用-type选项指定文件类型 。
-type选项最常用的参数如下:
find /usr -type d -name 'python*'检索 /usr 下所有文件名以python开头的 目录
find 命令支持-empty选项用来检索 为空 的文件或目录 。空文件即文件里没有任何内容,空目录即目录中没有任何文件或子目录 。
find ~ -type d -empty检索用户主目录下所有的空目录
find 命令也允许用户对当前的匹配条件进行 “反义” (类似于 逻辑非 操作) 。
如需要检索 /usr 下所有文件名 不 以.txt为后缀的文件 。可以使用以下命令:
find /usr -type f ! -name '*.txt'
也可以“翻转”任何其linux命令搜索路径他的筛选条件,如:
find /usr -type f ! -empty检索 /usr 下所有内容不为空的文件
为了检索归属于特定用户的文件或目录 , 可以使用-user选项 。
find / -type f -user starky检索根目录下所有属主为 starky 的文件
类似于-user 选项,-group选项则可以根据文件或目录的 属组 进行检索 。
有些时候,需要根据文件创建或修改的时间进行检索 。
Linux 系统中,与文件相关联的时间参数有以下三种:
与此对应的是 find 命令中的-mtime , -atime和-ctime三个选项 。
这三个选项的使用遵循以下示例中的规则:
find /usr -type f -mtime 2检索 /usr 下两天前被修改过的文件
如果觉得-mtime等选项以 天 为单位时间有点长,还可以使用-mmin ,-amin,-cmin三个选项:
find /usr -type f -mtime50 -mtime -100检索 /usr 下 50 到 100 天之前修改过的文件
find /usr -type f -mtime 2 -amin 5检索 /usr 下两天前被修改过且 5 分钟前又读取过的文件
-size选项允许用户通过文件大小进行搜索(只适用于文件 , 目录没有大小……) 。
表示文件大小的单位由以下字符组成:
另外,还可以使用或-符号表示 大于 或 小于 当前条件 。
find / -size1G检索文件大小高于 1 GB 的文件
find 命令可以使用-perm选项以文件权限为依据进行搜索 。
如需要检索 /usr 目录下权限为rwxr-xr-x的文件 , 可以使用以下命令:
find /usr -perm u=rwx,g=rx,o=rx
搜索 /usr 目录下所有权限为r-xr-xr-x (即系统中的所有用户都只有读写权限)的文件和目录,可以使用以下命令:
find /usr -perm a=rx
很多时候,linux命令搜索路径我们只想匹配文件权限的一个 子集。比如,检索可以直接被任何用户执行的文件,即只关心文件的执行权限,而不用管其读写权限是什么 。
上述的需求可以通过以下命令实现: find / -type f -perm /a=x
其中a=x前面的/符号即用来表示只匹配权限的某个子集(执行权限) , 而不用关心其他权限的具体设置 。
-perm选项也支持数字形式的文件权限标记 。
find /usr -perm 644搜索 /usr 目录下权限为644 (即rwxr-xr-x )的文件
find 命令默认是以 递归 的方式检索项目的,这有时候会导致得到的结果数量非常巨大 。可以使用-maxdepth限制 find 命令递归的层数 。
find / -maxdepth 3搜索时向下递归的层数最大为 3
在之前的例子中有出现多个搜索条件的 组合 以及对某个搜索条件的 反转。
实际上 find 命令支持“and”和“or”两种逻辑运算,对应的命令选项分别是-a和-o。通过这两个选项可以对搜索条件进行更复杂的组合 。
此外还可以使用 小括号 对搜索条件进行 分组。注意find命令中的小括号常需要用 单引号 包裹起来 。因小括号在 Shell 中有特殊的含义 。
如检索 /usr 下文件名以python开头且类型为目录的文件
find /usr -type d -name 'python*'
该命令等同于:
find /usr -type d -a -name 'python*'
更复杂的组合形式如:
find / '(' -mmin -5 -o -mtime50 ')' -a -type f
-delete选项可以用来删除搜索到的文件和目录 。
如删除 home 目录下所有的空目录:
find ~ -type d -empty -delete
-exec选项可以对搜索到的结果执行特定的命令 。
如需要将 home 目录下所有的 MP3 音频文件复制到移动存储设备(假设路径是/media/MyDrive ) , 可使用下面的命令:
find ~ -type f -name '*.mp3' -exec cp {} /media/MyDrive ';'
其中的 大括号 ( {} )作为检索到的文件的占位符 , 而分号(; )作为命令结束的标志 。因为分号是 Shell 中有特殊含义的符号,所以需要使用单引号括起来 。
每当 find 命令检索到一个符合条件的文件 , 会使用其完整路径取代命令中的{} , 然后执行-exec后面的命令一次 。
另一个很重要的用法是,在多个文件中检索某个指定的字符串 。
如在用户主目录下的所有文件中检索字符串hello,可以使用如下命令:
find ~ -type f -exec grep -l hello {} ';'
创建 Gzip 格式的压缩文件的命令为: tar -czvf filename.tar.gz list of files
现在假设需要将用户主目录下所有的 MP3 文件添加到压缩包music.tar.gz中,直观的感觉是,其命令应为如下形式:
find ~ -type f -name '*.mp3' -exec tar -czvf music.tar.gz {} ';'
实际情况是,这样得到的music.tar.gz其实只包含一个 MP3 文件 。
原因是 find 命令 每次 发现一个音频文件 , 都会再执行一次-exec选项后面的压缩命令 。导致先前生成的压缩包被覆盖 。
可以先让 find 命令检索出所有符合条件的音频文件 , 再将得到的 文件列表 传递给后面的压缩命令 。完整的命令如下:
find ~ -type f -name '*.mp3' -exec tar -czvf music.tar.gz {}
如果想浏览搜索到的文件(目录)的详细信息(如权限和大小等),可以直接使用-ls选项 。
【linux命令搜索路径 linux中搜索】find / -type file -size1G -ls浏览所有 1G 以上大小的文件的详细信息
A Guide to the Linux “Find” Command
find 命令手册 : man find
linux如何查找文件1、使用find命令
Linuxfind命令用来在指定目录下查找文件 。任何位于参数之前的字符串都将被视为欲查找的目录名 。如果使用该命令时,不设置任何参数 , 则find命令将在当前目录下查找子目录或文件 。并且将查找到的子目录和文件全部进行显示 。
语法:find path -option [ -print ] [ -exec -ok command ] {} \;
2、使用locate命令
Linux locate命令用于查找符合条件的文档,他会去保存文档和目录名称的数据库内,查找合乎范本样式条件的文档或目录 。
一般情况我们只需要输入locate your_file_name即可查找指定文件 。
语法:locate [-d ][--help][--version][范本样式...]
3、使用which命令
Linux which命令用于查找文件 。
which指令会在环境变量$PATH设置的目录里查找符合条件的文件 。
语法:which [文件...]
4、使用whereis命令
Linux whereis命令用于查找文件 。
该指令会在特定目录中查找符合条件的文件 。这些文件应属于原始代码、二进制文件,或是帮助文件 。
该指令只能用于查找二进制文件、源代码文件和man手册页,一般文件的定位需使用locate命令 。
语法:whereis [-bfmsu][-B 目录...][-M 目录...][-S目录...][文件...]
Linux中在当前目录下查找某个文件 。1、打开shell连接工具,连接上服务器,pwd查看当前目录,一般进来默认在主目录下 。
2、通过命令:cd /切换到主目录下,然后pwd查看当前目录 , 并用ls可以查看当前目录下的文件及目录 。
3、假如要找一个nginx配置文件nginx.conf,那么可以通过find命令查找:find . -name 'nginx.conf' 。
4、假如不知道文件的具体名字只是模糊记得几个关键的单词,那么就可以通过模糊匹配去搜索:find 目录 -name '*nginx*' 查找即可 。
linux查看路径命令 Linux系统下想要查看当前linux命令搜索路径的路径linux命令搜索路径,那linux命令搜索路径我们该使用那个命令呢?下面由我为大家整理linux命令搜索路径了linux查看路径命令的相关知识 , 希望对大家有帮助 。
目录
linux查看路径命令
linux查看路径的其他命令
linux下查找某个文件位置的方法
linux查看路径命令
查看当前路径命令:pwd
pwd命令能够显示当前所处的路径 。
这个命令比较简单,如果有时在操作过程中忘记了当前的路径,则可以通过此命令来查看路径,其执行方式为:
# pwd /home/samlee
第一行为运行的命令,第二行的内容为运行pwd命令后显示的信息 , 即显示用户当前所在的工作目录的路径为/home/samlee 。
提示:
应该经常使用pwd命令 。Linux的目录结构非常复杂,一个小小的分支就可能会有十几层目录,就好像是个森林,所以Linux不会像Windows那样把全路径写在提示符里 , 那样太长了 。
linux查看路径的其他命令
whereis 用来查看一个命令或者文件所在的绝对路径 , 而 which 用来查看当前要执行的命令所在的路径 。
下面举个例子来说明 。加入你的linux系统上装了多个版本的java 。如果你直接在命令行敲命令 "java -version",会得到一个结果 。但是,你知道是哪一个路径下的java在执行吗?如果想知道,可以用 which 命令:
which java
得到的结果就是系统默认执行的java所在的路径 。
如果使用命令: whereis java
那么你会得到很多条结果 , 因为这个命令把所有包含java(不管是文件还是文件夹)的路径都列了出来 。
linux下查找某个文件位置的方法
一.通过文件名查找法:
举例说明 , 假设你忘记了httpd.conf这个文件在系统的哪个目录 下,甚至在系统的某个地方也不知道,则这是可以使用如下命令:
find / -name httpd.conf
这个命令语法看起来很容易就明白了,就是直接在find后面写上-name,表明要求系统按照文件名查找,最后写上httpd.conf这个目标文件名即可 。稍等一会系统会在计算机屏幕上显示出查找结果列表:
etc/httpd/conf/httpd.conf
这就是httpd.conf这个文件在Linux系统中的完整路径 。查找成功 。
如果输入以上查找命令后系统并没有显示出结果,那么不要以为系统没有执行find / -namehttpd.conf命令,而可能是你的系统中没有安装Apache服务器,这时只要你安装了ApacheWeb服务器,然后再使用find / -namehttpd.conf就能找到这个配置文件了 。
二.无错误查找技巧:
在Linux系统中“find”命令是大多数系统用户都可以使用的命令 , 并不是ROOT系统管理员的专利 。但是普通用户使用“find”命令时也有可能遇到这样的问题 , 那就是Linux系统中系统管理员ROOT可以把某些文件目录设置成禁止访问模式 。这样普通用户就没有权限用“find”命令来查询这些目录或者文件 。当普通用户使用“find”命令来查询这些文件目录是 , 往往会出现"Permissiondenied."(禁止访问)字样 。系统将无法查询到你想要的文件 。为了避免这样的错误,我们可是使用转移错误提示的方法尝试着查找文件,例如输入:
find / -name access_log 2/dev/null
这个方法是把查找错误提示转移到特定的目录中去 。系统执行这个命令后,遇到错误的信息就直接输送到stderrstream2中 , access_log2就是表明系统将把错误信息输送到stderrstream2中 , /dev/null是一个特殊的文件,表明空的或者错误的信息,这样查询到的错误信息将被转移了,不会再显示了 。
在Linux系统查找文件也会遇到这样一个实际问题 。如果我们在整个硬盘 , 这个系统中查找某个文件就要花费相当长的一段时间,特别是大型Linux系统和容量较大的硬盘,文件放在套嵌很深的目录中的时候 。如果我们知道了这个文件存放在某个大的目录中,那么只要在这个目录中往下找就能节省很多时间了 。使 用find/etc -namehttpd.conf就可以解决这个问题 。上面的命令就是表示在etc目录中查询httpd.conf这个文件 。这里再说明一下“/”这个函数符号的含义,如果输入“find /”就是表示要求Linux系统在整个ROOT目录下查找文件 , 也就是在整个硬盘上查找文件,而“find /etc”就是只在
etc目录下查找文件 。因为“find /etc”表示只在etc目录下查找文件 , 所以查找的速度就相应要快很多了 。
三.根据部分文件名查找方法:
例如我们知道某个文件包含有srm这3个字母,那么要找到系统中所有包含有这3个字母的文件是可以实现 的,输入:
find /etc -name '_srm_'
这个命令表明了Linux系统将在/etc整个目录中查找所有的包含有srm这3个字母的文件,比如absrmyz,tibc.srm等等符合条件的文件都能显示出来 。如果你还知道这个文件是由srm这3个字母打头的,那么我们还可以省略最前面的星号,命令如下:
find/etc -name 'srm_'
这是只有像srmyz这样的文件才被查找出来,像absrmyz或者absrm这样的文件都不符合要求,不被显示,这样查找文件的效率和可靠性就大大增强了 。
四.根据文件的特征查询方法:
如果只知道某个文件的大小,修改日期等特征也可以使用“find”命令查找出来,这和WINDOWS系统中的“搜索”功能是基本相同的 。在微软的“搜索”中,“搜索助理”使得搜索文件和文件夹、打印机、用户以及网络中的其他计算机更加容易 。它甚至使在Internet上搜索更加容易 。“搜索助理”还包括一个索引服务,该服务维护了计算机中所有文件的索引,使得搜索速度更快 。使用“搜索助理”时,用户可以指定多个搜索标准 。例如,用户可以按名称、类型及大小搜索文件和文件夹 。用户甚至可以搜索包含特定文本的文件 。如果用户正使用Active Directory,这时还可以搜索带有特定名称或位置的打印机 。
例如我们知道一个Linux文件大小为1,500bytes,那么我们可是使用如下命令来查询find /-size
1500c,字符c表明这个要查找的文件的大小是以bytes为单位 。如果我们连这个文件的具体大小都不知道,那么在Linux中还可以进行模糊查找方式来解决 。例如我们输入find/-size 10000000c这个命令,则标明我们指定系统在根目录中查找出大于10000000字节的文件并显示出来 。命令中的“ ”是表示要求系统只列出大于指定大小的文件,而使用“-”则表示要求系统列出小于指定大小的文件 。下面的列表就是在Linux使用不同“find"命令后系统所要作出的查找动作,从中我们很容易看出在Linux中使用“find”命令的方式是很多的,“find”命令查找文件只要灵活应用,丝毫不比在WINDOWS中查找能力差 。
find / -amin -10 # 查找在系统中最后10分钟访问的文件
find / -atime -2 # 查找在系统中最后48小时访问的文件
find / -empty # 查找在系统中为空的文件或者文件夹
find / -group cat # 查找在系统中属于groupcat的文件
find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件
find / -mtime -1 #查找在系统中最后24小时里修改过的文件
find / -nouser #查找在系统中属于作废用户的文件
find / -user fred #查找在系统中属于FRED这个用户的文件
linux查看路径命令

    推荐阅读