linux查找组件命令 linux系统查找文件夹命令

如何使用命令行在Linux中查找文件和文件夹

在使用linux时,经常需要进行文件查找。其中查找的命令主要有find和grep。两个命令是有区的。 区别:(1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。

创新互联长期为近千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为隆化企业提供专业的做网站、成都做网站,隆化网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制开发。

在linux中如何用命令查找文件在哪

linux中查找文件位置的命令有很多,常用的有find,locate和whereis三个命令,下面分别介绍它们的用法:

1、find命令是linux中最强大的查找文件的命令,它的格式为”find  指定目录 指定条件 指定动作“。比如使用find命令搜索在根目录下的所有interfaces文件所在位置,命令格式为”find / -name  'interfaces'”,输入后就会返回搜索的结果了:

2、第二个命令是locate命令,使用locate也可以搜索到linux系统中的文件,同样的这里使用locate命令搜索interfaces文件,命令为”locate interfaces“,locate命令是比find命令快的,因为它查询的是locatedb数据库,该数据库包含本地所有的文件信息:

3、最后一个是使用”whereis“命令搜索文件,但是只可以搜索linux系统中的可执行文件。这里用whereis搜索interfaces文件就不起作用了,所以使用whereis命令搜索grep的可执行文件,其命令为”whereis grep“。以上就是linux中查找文件的命令的用法介绍:

Linux 查找文件用什么命令好

find:查找文件或目录所在路径

格式:find

[路径]

[表达式]

表达式:

-name

:查找名为filename的文件

-perm

:按执行权限来查找

-empty

:查找空文件或空目录

-user

:按文件属主来查找

-group

:按组来查找

-nogroup

:查无有效属组的文件,即文件的属组在/etc/groups中不存在

-nouser

:查无有效属主的文件,即文件的属主在/etc/passwd中不存

-mtime

:按文件更改时间来查找文件

-atime

:按文件访问时间来查找文件

-ctime

:按文件创建时间来查找文件

-newer

:查更改时间更新的文件或目录

-type

:查是块设备b、目录d、字符设备c、管道p、符号链接l、普通文件f

-size

n[c]

:查找大小为n块(512字节)[或n字节]的文件

-inum

:根据i节点查找

-depth

:使查找在进入子目录前先行查找完本目录

-fstype

:查位于某一类型文件系统中的文件,这些文件系统类型通常可

在/etc/fstab中找到

-mount

:查文件时不跨越文件系统mount点

-cpio

:对匹配的文件使用cpio命令,将他们备份到磁带设备中

-prune

:忽略某个目录

-maxdepth

:查询的目录深度

-exec

:查找文件并执行后面的命令

find

...

-exec

CMD

{}

\;

-ok

:询问是否要执行后面的命令

find

...

-ok

CMD

{}

\;

-perm

mode表示严格匹配

-perm

-mode

表示mode中转换成二进制的1必须全部匹配(不管0位)

-perm

+mode

表示mode中转换成二进制的1必须部分匹配(不管0位)

-ctime/atime/mtime/cmin/amin/mmin:按时间查找

以天为单位的:ctime、atime、mtime

以分钟为单位的:cmin、amin、mmin

c--change表示文件的属性被修改过

a--access

m--modify表示文件的内容被修改过

+n表示n天以前

-n表示n天以内

[root@rhel6

~]#

find

/etc/

-name

"host*"

"查询/etc/目录(包括子目录)中以host开头的文件或目录"

[root@rhel6

~]#

find

-type

l

"查询当前目录下文件类型为链接的文件"

[root@rhel6

~]#

find

-size

+10000000c

"查询当前目录中10M的文件"

[root@rhel6

~]#

find

-size

-1K

"查询当前目录中1K的文件"

[root@rhel6

~]#

find

/etc

-name

inittab

-o

-size

+17M

"查询/etc/目录中文件名为inittab或文件17M的文件"

[root@rhel6

~]#

find

/etc

-name

"*.conf"

[-a]

-size

+20k

"查询/etc/目录中文件名为*.conf且文件20k的文件"

[root@rhel6

~]#

find

/etc/*

-name

"*.conf"

-not

-name

"*http*"

"查询/etc目录中文件名为*.conf但不包含http的文件"

[root@rhel6

~]#

find

/etc/

-empty

"查询/etc/目录中的空文件或空目录"

[root@rhel6

~]#

find

/var

-user

Oracle

"查询/var/目录中属于用户oracle的文件或目录"

[root@rhel6

~]#

find

/home

-group

xfcy

[root@rhel6

~]#

find

-inum

1024

"查询当前目录中

i

节点为1024的文件或目录"

[root@rhel6

~]#

find

-newer

new

"查询当前目录中比文件new还新的文件或目录"

[root@rhel6

~]#

find

/etc/

-nouser

-o

-nogroup

"查询/etc/目录中不属于本地用户的文件或目录(危险文件)"

[root@rhel6

~]#

find

/data/

-mmin

-10

"查询/data/目录中十分钟内文件内容被修改过的文件"

[root@rhel6

~]#

find

/proc/

-type

f

-maxdepth

1

"查询/data/目录中文件类型为普通文件的文件且不查询子目录"

[root@rhel6

~]#

find

/data/

-mtime

-10

-exec

rm

{}

\;

"查询/data/目录中十分钟内内容被修改过的文件并将其删除"

[root@rhel6

~]#

find

/data/

-mtime

-10

-ok

rm

{}

\;

"查询/data/目录中十分钟内内容被修改过的文件并询问是否将其删除(y/n)"

linux查找内容命令

find,用于在文件树中查找文件并作相应的处理

-name:按照文件名查找文件

-perm:按照文件权限查找文件

-user:按照文件属主来查找文件

-size:按照指定的文件大小查找文件【+n:大于,-n:小于,n:等于】

-group:按照文件所属的组来查找文件

-mtime-n+n:按照文件更改时间来查找文件,-n表示n天之内,+n表示n天以前

-newer file1 file2:查找更改时间在file1和file2之间的文件

例如:

find -mtime -2:查找48小时修改过的文件

find -name ".log":查找当前目录以".log"结尾的文件

find /opt/soft/test -perm 777:查找指定目录下权限为777的文件

find -type f -name "*.log":查找当前目录下以".log"结尾的普通文件

find -type d | sort:查找当前所有目标目录并排序

find /home/wansw -size +20M:查找大于20M的文件

locate指令,可以快速定位文件路径,利用事先建立的系统中的所有文件名称和路径的locate数据库,无需遍历整个文件系统,查询速度较快,为了保证查询准确性,需要定期更新。《Linux就该这么学》

updatedb:第一次运行前,创建locate数据库

grep,用于过滤/搜索指定字符串。可以使用正则表达式,能配合多种命令使用。

用法:grep 【选项】 查找内容 源文件

-A:显示符合的行及之后的内容

-B:显示符合的行及之前的内容

-C:显示符合的行及前后的内容

-c:计算符合的行数目

-n:显示匹配行和行号

-i:忽略大小写

规则表达式

:'grep'表示匹配所有以grep开头的行

'表示匹配所有以grep结尾的行

.:'gr.p'表示匹配'gr'后面接任意字符然后是'p'

:'grep'表示匹配一个或多个空格后紧跟grep的行

[]:[Gg]rep表示匹配Grep与grep

[]:[A-FH-Z]rep表示匹配不以A-F、H-Z开头并紧跟rep的行

例如(grep命令大多数时候多要和别的命令一起使用才有意义):

ps -ef | grep -c SVN:查找指定的进程的个数

cat test.txt | grep -f test2.txt:从text2.txt中读取关键字后在test.txt中搜索

cat test.txt | grep nf text2.txt:从text2.txt中读取关键字后在text.txt中搜索并显示行号

grep 'linux' text.txt test2.txt:从多个文件中搜索关键字'linux'

cat test.txt | grep -E 'ed|at':显示包含ed或at的行

linux查找文件内容命令

搜索、查找文件当中的内容,一般最常用的是grep命令,另外还有egrep, vi命令也能搜索文件里面内容

1:搜索某个文件里面是否包含字符串,使用grep "search content" filename1, 例如

$ grep ORA alert_gsp.log

$ grep "ORA" alert_gsp.log

例如我们需要搜索、查找utlspadv.sql文件中包含ORA的字符内容

[oracle@DB-Server admin]$ grep "ORA" utlspadv.sql

--   ORA-XXXXX:        Monitoring already started. If for example you want

--   ORA-20111:

--   ORA-20112:

--   ORA-20113: 'no active monitoring job found'

--   ORA-20113: 'no active monitoring job found'

-- 0 |PS =DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM 0 0 2 99.3% 0% 0.7% ""

-- |PR DBS1.REGRESS.RDBMS.DEV.US.ORACLE.COM= 100% 0% 0% "" |PR ...

-- =DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM 92 7 99.3% 0% 0.7% "" |PR ...

-- |C CAPTURE_USER1=DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM 2 0 0 0.E+00

-- |C CAPTURE_USER1=DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM

-- ORA-20111:

-- ORA-20112:

--   ORA-20100:

--   ORA-20113: 'no active monitoring job found'

--   ORA-20113: 'no active monitoring job found'

[oracle@DB-Server admin]$

如上所示,这个是一个模糊匹配,其实我是想要查看ORA这类错误,那么我要过滤掉哪一些没有用的,搜索的内容修改一下即可(当然也可以使用特殊参数,后面有讲述),如下所示。

[oracle@DB-Server admin]$ grep "ORA-" utlspadv.sql

--   ORA-XXXXX:        Monitoring already started. If for example you want

--   ORA-20111:

--   ORA-20112:

--   ORA-20113: 'no active monitoring job found'

--   ORA-20113: 'no active monitoring job found'

-- ORA-20111:

-- ORA-20112:

--   ORA-20100:

--   ORA-20113: 'no active monitoring job found'

--   ORA-20113: 'no active monitoring job found'

[oracle@DB-Server admin]$

2: 如果你想搜索多个文件是否包含某个字符串,可以使用下面方式

grep "search content" filename1 filename2.... filenamen

grep "search content" *.sql

例如我想查看当前目录下,哪些sql脚本包含视图v$temp_space_header(注意:搜索的内容如果包含特殊字符时,必须进行转义处理,如下所示)

[oracle@DB-Server admin]$ grep "v\$temp_space_header" *.sql

catspacd.sql:drop public synonym v$temp_space_header;

catspacd.sql:drop public synonym gv$temp_space_header;

catspace.sql:create or replace view v_$temp_space_header as select * from v$temp_space_header;

catspace.sql:create or replace public synonym v$temp_space_header for v_$temp_space_header;

catspace.sql:create or replace view gv_$temp_space_header as select * from gv$temp_space_header;

catspace.sql:create or replace public synonym gv$temp_space_header

catspace.sql:            FROM gv$temp_space_header

[oracle@DB-Server admin]$

3:如果需要显示搜索文本在文件中的行数,可以使用参数-n

[oracle@DB-Server admin]$ grep  -n "v\$temp_space_header" *.sql

catspacd.sql:68:drop public synonym v$temp_space_header;

catspacd.sql:71:drop public synonym gv$temp_space_header;

catspace.sql:1952:create or replace view v_$temp_space_header as select * from v$temp_space_header;

catspace.sql:1953:create or replace public synonym v$temp_space_header for v_$temp_space_header;

catspace.sql:1956:create or replace view gv_$temp_space_header as select * from gv$temp_space_header;

catspace.sql:1957:create or replace public synonym gv$temp_space_header

catspace.sql:2357:            FROM gv$temp_space_header

[oracle@DB-Server admin]$

4: 如果搜索时需要忽略大小写问题,可以使用参数-i

[oracle@DB-Server admin]$ grep  "V\$TEMP_SPACE_HEADER" *.sql

[oracle@DB-Server admin]$ grep -i "V\$TEMP_SPACE_HEADER"  *.sql

catspacd.sql:drop public synonym v$temp_space_header;

catspacd.sql:drop public synonym gv$temp_space_header;

catspace.sql:create or replace view v_$temp_space_header as select * from v$temp_space_header;

catspace.sql:create or replace public synonym v$temp_space_header for v_$temp_space_header;

catspace.sql:create or replace view gv_$temp_space_header as select * from gv$temp_space_header;

catspace.sql:create or replace public synonym gv$temp_space_header

catspace.sql:            FROM gv$temp_space_header

[oracle@DB-Server admin]$

另外,例如检查安装的MySQL组件

[root@DB-Server init.d]# rpm -qa | grep -i mysql

MySQL-devel-5.6.23-1.linux_glibc2.5

MySQL-client-5.6.23-1.linux_glibc2.5

MySQL-server-5.6.23-1.linux_glibc2.5

5:从文件内容查找不匹配指定字符串的行:

$ grep –v "被查找的字符串" 文件名

例如查找某些进程时,我们不想显示包含命令grep ora_mmon的进程,如下所示

[oracle@DB-Server admin]$ ps -ef  | grep ora_mmon 

oracle   16675 16220  0 00:09 pts/1    00:00:00 grep ora_mmon

oracle   21412     1  0 Aug22 ?        00:00:07 ora_mmon_gsp

[oracle@DB-Server admin]$ ps -ef  | grep ora_mmon  | grep -v grep

oracle   21412     1  0 Aug22 ?        00:00:07 ora_mmon_gsp

[oracle@DB-Server admin]$

6:搜索、查找匹配的行数:

$ grep -c "被查找的字符串" 文件名

[oracle@DB-Server admin]$

[oracle@DB-Server admin]$ grep   "v\$temp_space_header" *.sql

catspacd.sql:drop public synonym v$temp_space_header;

catspacd.sql:drop public synonym gv$temp_space_header;

catspace.sql:create or replace view v_$temp_space_header as select * from v$temp_space_header;

catspace.sql:create or replace public synonym v$temp_space_header for v_$temp_space_header;

catspace.sql:create or replace view gv_$temp_space_header as select * from gv$temp_space_header;

catspace.sql:create or replace public synonym gv$temp_space_header

catspace.sql:            FROM gv$temp_space_header

[oracle@DB-Server admin]$ grep -c  "v\$temp_space_header"  catspacd.sql

2

[oracle@DB-Server admin]$ grep -c  "v\$temp_space_header"  catspace.sql

5

[oracle@DB-Server admin]$

7:有些场景,我们并不知道文件类型、或那些文件包含有我们需要搜索的字符串,那么可以递归搜索某个目录以及子目录下的所有文件

[oracle@DB-Server ~]$ grep -r "v\$temp_space_header" /u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/

/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql:create or replace view v_$temp_space_header as select * from v$temp_space_header;

/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql:create or replace public synonym v$temp_space_header for v_$temp_space_header;

/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql:create or replace view gv_$temp_space_header as select * from gv$temp_space_header;

/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql:create or replace public synonym gv$temp_space_header

/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql: FROM gv$temp_space_header

/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspacd.sql:drop public synonym v$temp_space_header;

/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspacd.sql:drop public synonym gv$temp_space_header;

[oracle@DB-Server ~]$

8:如果我们只想获取那些文件包含搜索的内容,那么可以使用下命令

[oracle@DB-Server ~]$ grep -H -r "v\$temp_space_header" /u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/ | cut -d: -f1

/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql

/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql

/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql

/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql

/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql

/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspacd.sql

/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspacd.sql

[oracle@DB-Server ~]$ grep -H -r "v\$temp_space_header" /u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/ | cut -d: -f1 | uniq

/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql

/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspacd.sql

[oracle@DB-Server ~]$

9:如果只想获取和整个搜索字符匹配的内容,那么可以使用参数w

你可以对比一下两者的区别

[oracle@DB-Server admin]$ grep -w "ORA" utlspadv.sql

--   ORA-XXXXX:        Monitoring already started. If for example you want

--   ORA-20111:

--   ORA-20112:

--   ORA-20113: 'no active monitoring job found'

--   ORA-20113: 'no active monitoring job found'

-- ORA-20111:

-- ORA-20112:

--   ORA-20100:

--   ORA-20113: 'no active monitoring job found'

--   ORA-20113: 'no active monitoring job found'

[oracle@DB-Server admin]$ grep  "ORA" utlspadv.sql

--   ORA-XXXXX:        Monitoring already started. If for example you want

--   ORA-20111:

--   ORA-20112:

--   ORA-20113: 'no active monitoring job found'

--   ORA-20113: 'no active monitoring job found'

-- 0 |PS =DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM 0 0 2 99.3% 0% 0.7% ""

-- |PR DBS1.REGRESS.RDBMS.DEV.US.ORACLE.COM= 100% 0% 0% "" |PR ...

-- =DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM 92 7 99.3% 0% 0.7% "" |PR ...

-- |C CAPTURE_USER1=DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM 2 0 0 0.E+00

-- |C CAPTURE_USER1=DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM

-- ORA-20111:

-- ORA-20112:

--   ORA-20100:

--   ORA-20113: 'no active monitoring job found'

--   ORA-20113: 'no active monitoring job found'

[oracle@DB-Server admin]$

10: grep命令结合find命令搜索

[oracle@DB-Server admin]$ find . -name '*.sql' -exec grep -i 'v\$temp_space_header' {} \; -print

create or replace view v_$temp_space_header as select * from v$temp_space_header;

create or replace public synonym v$temp_space_header for v_$temp_space_header;

create or replace view gv_$temp_space_header as select * from gv$temp_space_header;

create or replace public synonym gv$temp_space_header

FROM gv$temp_space_header

./catspace.sql

drop public synonym v$temp_space_header;

drop public synonym gv$temp_space_header;

./catspacd.sql

[oracle@DB-Server admin]$

11: egrep -w -R 'word1|word2' ~/klbtmp

12: vi命令其实也能搜索文件里面的内容,只不过没有grep命令功能那么方便、强大。

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查找组件命令 linux系统查找文件夹命令
本文来源:http://azwzsj.com/article/hgijpd.html