linux搜索命令or,linux操作系统的查找和搜索命令-成都创新互联网站建设

关于创新互联

多方位宣传企业产品与服务 突出企业形象

公司简介 公司的服务 荣誉资质 新闻动态 联系我们

linux搜索命令or,linux操作系统的查找和搜索命令

Linux命令

命令格式: 命令 [-选项] [参数]

创新互联公司2013年至今,先为皇姑等服务建站,皇姑等地企业,进行企业商务咨询服务。为皇姑企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

如:ls -la /usr

**说明: **

大部分命令遵从该格式

多个选项时,可以一起写 eg:ls –l –a à ls –la

简化选项与完整选项(注:并非所有选项都可使用完整选项) eg:ls –all à ls –a

作用:切换用户身份

语法:su [选项] 用户名

-c 仅执行一次命令,而不切换用户身份

$ su – root

env

$ su – root –c “useradd longjing”

文件或目录的CRUD

英文:change directory 命令路径:内部命令 执行权限:所有用户

作用: 切换目录

语法:cd [目录] / 切换到根目录

.. 回到上一级目录

. 当前目录

~ 当前用户的宿主目录(eg:# cd ~用户名 进入某个用户的家目录)

英文:list 命令路径:/bin/ls 执行权限:所有用户

作用:显示目录文件

语法:ls [-alrRd] [文件或目录]

-a all 显示所有文件,注意隐藏文件,特殊目录.和..

-l(long) 显示详细信息

-R(recursive) 递归显示当前目录下所有目录

-r (reverse) 逆序排序

-t(time) 按修改时间排序(降序)

英文:print working directory 命令路径:/bin/pwd 执行权限:所有用户

作用:显示当前工作目录

语法:pwd [-LP]

-L 显示链接路径,当前路径,默认

-P 物理路径

eg:# cd /etc/init.d

英文:make directories 命令路径:/bin/mkdir 执行权限:所有用户

作用:创建新目录

语法:mkdir [-p] 目录名

-p 父目录不存在情况下先生成父目录 (parents)

eg: mkdir linux/test 如果目录linux不存在,则报错,使用参数-p即可自动创建父目录。

命令路径:/bin/touch 执行权限:所有用户

作用:创建空文件或更新已存在文件的时间

语法:touch 文件名

eg:touch a.txt b.txt touch {a.txt,b.txt} 同时创建多个文件

创建带空格的文件 eg:touch "program files" 在查询和删除时也必须带双引号

注意:生产环境中,文件名,一定不要加空格

英文:copy 命令路径:/bin/cp 执行权限:所有用户

作用:复制文件或目录

语法:cp [–rp] 源文件或目录 目的目录

-r -R recursive 递归处理,复制目录

-p 保留文件属性 (原文件的时间不变)

eg:

1,相对路径 cp –R /etc/* . cp –R ../aaa ../../test/

2,,绝对路径 cp –R / ect/service /root/test/aa/bb

英文:move 命令路径:/bin/mv 执行权限:所有用户

作用:移动文件或目录、文件或目录改名

语法:mv 源文件或目录 目的目录

英文:remove 命令路径:/bin/rm 执行权限:所有用户

作用:删除文件

语法: rm [-rf] 文件或目录

-r (recursive)删除目录,同时删除该目录下的所有文件

-f(force) 强制删除文件或目录 即使原档案属性设为唯读,亦直接删除,无需逐一确认

注意:工作中,谨慎使用rm –rf 命令。

扩展点 :删除乱码文件

一些文件乱码后使用rm -rf 依然无法删除

此时,使用ll -i 查找到文件的inode节点

然后使用find . -inum 查找到的inode编号 -exec rm {} -rf ;

就能顺利删除了

英文:concatenate 命令路径:/bin/cat 执行权限:所有用户

作用:显示文件内容

语法:cat [-n] [文件名]

-n 显示行号

eg:cat /etc/services

命令路径:/bin/more 执行权限:所有用户

作用:分页显示文件内容

语法:more [文件名]

空格或f 显示下一页

Enter键 显示下一行

q或Q 退出

命令路径:/usr/bin/head 执行权限:所有用户

作用:查看文件前几行(默认10行)

语法:head [文件名]

-n 指定行数

eg:head -20 /etc/services head –n 3 /etc/services

命令路径:/usr/bin/tail 执行权限:所有用户

作用:查看文件的后几行

语法:tail [文件名]

-n 指定行数

-f (follow) 动态显示文件内容

获取一个大文件的部分文件,可使用head或tail命令

head -n 100 /etc/services config.log

英文: link 命令路径:/bin/ln 执行权限:所有用户

作用:产生链接文件

语法:

ln -s [源文件] [目标文件] 创建软链接 源文件 使用 绝对路径

ln [源文件] [目标文件] 创建硬链接

eg:ln -s /etc/service ./service.soft

创建文件/etc/service的软链接service.soft

eg:/etc/service /service.hard

创建文件/etc/service的硬链接/service.hard

软连接类似于windows下的快捷方式

软连接文件格式:

lrwxrwxrwx. 1 root root 13 Jul 20 07:50 service - /etc/services

1 硬链接数量,如果该文件没有硬链接,就只有本身一个硬链接。

13链接文件的长度

格式解析(特征):

1, 软连接的文件类型是 l(软连接),软连接文件的权限 都是 lrwxrwxrwx

2,- 箭头指向到源文件

真正的权限取决于对源文件的权限

时间值为创建软连接的时间

软连接可以跨文件系统生成

硬链接特征

1,相当于 cp -p +同步更新

2,通过i节点识别,与源文件有相同的inode节点

3,硬链接不能跨分区,ln /home/test/issuels /boot/test (错误)

4,不能针对目录使用 ln /tmp/ aa.hard (无法将目录/tmp 生成硬链接)

删除软连接

rm -rf symbolic_name

英文:manual 命令路径:/usr/bin/man 执行权限:所有用户

作用:获取命令或配置文件的帮助信息

语法:man [命令/配置文件]

eg:man ls man services

(查看配置文件时,不需要配置文件的绝对路径,只需要文件名即可)

调用的是more命令来浏览帮助文档,按空格翻下一页,按回车翻下一行,按q退出。

使用/加上关键的参数可直接定位搜索, n 查找下一个,shift+n 查找上一个

eg: /-l 直接查看-l的介绍

扩展:man的级别 (帮助文档的类型, 了解1 5即可)

man man-pages 查看每一种类型代表的含义 man文档的类型(1~9)

1是命令,5是配置文件 man优先显示命令,可指定帮助类型

eg:man 5 passwd (5代表配置文件级别)

[图片上传失败...(image-6718d2-1624438708895)]

help 查看shell内置命令的帮助信息

eg:help cd

内置命令,使用whereis,which,man都不能查看

type 命令 查看内部命令还是外部命令

命令名 --help 列举该命令的常用选项

eg: cp --help

命令路径:/bin/find 执行权限:所有用户

作用:查找文件或目录

语法:find [搜索路径] [匹配条件]

如果没有指定搜索路径,默认从当前目录查找

find命令选项

-name 按名称查找 精准查找

eg:find /etc -name “init” 在目录/etc中查找文件init

-iname 按名称查找

find查找中的字符匹配:

*:匹配所有

?:匹配单个字符

eg:find /etc -name “init???” 在目录/etc中查找以init开头的,且后面有三位的文件

模糊匹配的条件,建议使用单引号或双引号括起来。如果*被转义,可使用 单双引号括住查询条件,或者使用*。

eg: # find . –name *g

-size ****按文件大小查找

以block为单位,一个block是512B, 1K=2block +大于 -小于 不写是等于

eg:find /etc -size -204800 在etc目录下找出大于100MB的文件

100MB=102400KB=204800block

**-type ** 按文件类型查找

f 二进制文件l 软连接文件 d 目录 c 字符文件

eg: find /dev -type c

find****查找的基本原则 :

占用最少的系统资源,即查询范围最小,查询条件最精准

eg:

如果明确知道查找的文件在哪一个目录,就直接对指定目录查找,不查找根目录/

命令路径:/bin/grep 执行权限:所有用户

作用:在文件中搜寻字串匹配的行并输出

语法:grep [-cinv] '搜寻字符串' filename

选项与参数:

-c :输出匹配行的次数(是以行为单位,不是以出现次数为单位)

-i :忽略大小写,所以大小写视为相同

-n :显示匹配行及行号

-v :反向选择,显示不包含匹配文本的所有行。

eg:grep ftp /etc/services

eg:#grep -v ^# /etc/inittab 去掉文件行首的#号

eg:# grep -n “init”/etc/inittab 显示在inittab文件中,init匹配行及行号

eg:# grep -c“init”/etc/inittab 显示在inittab文件中,init匹配了多少次

命令路径:/usr/bin/which 执行权限:所有用户

作用: 显示系统命令所在目录(绝对路径及别名)

which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令

alias ls='ls --color=auto'

/bin/ls

/usr/bin/which: no zs in (/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/ch/bin)

命令路径:/usr/bin/whereis 执行权限:所有用户

作用:**搜索命令所在目录 配置文件所在目录 及帮助文档路径 **

eg: which passwd 和 whereis passwd

eg:查看/etc/passwd配置文件的帮助,就用 man 5 passwd

英文:GNU zip 命令路径:/bin/gzip 执行权限:所有用户

作用:压缩(解压)文件,压缩文件后缀为.gz

gzip只能压缩文件,不能压缩目录;不保留原文件

语法:gzip 文件

-d将压缩文件解压(decompress)

解压使用gzip –d或者 gunzip

命令路径:/usr/bin/bzip2 执行权限:所有用户

作用: 压缩(解压)文件,压缩文件后缀为.bz2

语法:bzip2 [-k] [文件]

-k:产生压缩文件后保留原文件(压缩比高)

-d 解压缩的参数(decompress)

解压使用bzip2 –d或者 bunzip2

命令路径:/usr/bin/zip 执行权限:所有用户

作用: 压缩(解压)文件,压缩文件后缀为.zip

语法:zip 选项[-r] [压缩后文件名称] [文件或目录]

-r压缩目录

eg:zip services.zip /etc/services 压缩文件;

zip -r test.zip /test 压缩目录

如果不加-r选项,压缩后的文件没有数据。

解压使用unzip

命令路径:/bin/tar 执行权限:所有用户

作用:文件、目录打(解)包

语法:tar [-zcf] 压缩后文件名 文件或目录

-c 建立一个压缩文件的参数指令(create),后缀是.tar

-x 解开一个压缩文件的参数指令(extract)

-z 以gzip命令压缩/解压缩

-j 以bzip2命令压缩/解压缩

-v 压缩的过程中显示文件(verbose)

-f file 指定文件名,必选项

1, 单独的打包 ,解包 tar –cf tar –xf

2, 打包之后,进行压缩 gzip bzip2

3, 一步到位 tar –zcvf tar -zxvf

tar -cf -xf 单独 压缩 解压缩

tar -z 以gzip打包目录并压缩 文件格式.tar.gz(.tgz)

tar -j 以bzip2打包目录并压缩 文件格式.tar.bz2

eg:tar -zcvf dir1.tar.gzdir1 使用gzip将目录dir1压缩成一个打包并压缩文件dir1.tar.gz

eg: tar -cvf bak.tar . 将当前目录的文件打包为bak.tar

eg: tar -xvf bak.tar 解压

eg: tar -zcvf bak.tar.gz bak.tar 或 gzip bak.tar使用gzip将打包文件bak.tar压缩为bak.tar.gz

eg: tar -jcvf bak.tar.bz2 bak.tar 或 bzip2 bak.tar 使用bzip2将打包文件bak.tar压缩为bak.tar.bz2

eg: tar -rvf bak.tar /etc/password 将/etc/password追加文件到bak.tar中(r)

eg:tar -cjvf test.tar.bz2 test 生成test.tar.bz2的压缩文件

eg:tar -xjf test.tar.bz2 解压

最常用: tar + gzip

tar –zcvf 压缩

tar –zxvf 解压

补充:

1,文件路径, 压缩包带文件路径

2,源文件是保留的,不会被删除

**shutdown **[选项] 时间

选项: -c: 取消前一个关机命令

-h:关机

-r:重启

eg:

shutdown -h now 立即关机 shutdown -h 20:30 定时关机

其他关机命令 halt poweroff init 0

其他重启命令

**reboot **重启系统 reboot -h now立即重启

init 6

注意:生产环境中,关机命令和重启命令谨慎执行。

善于查看man help等帮助文档

利用好Tab键 自动补全

掌握好一些快捷键

ctrl + c(停止当前进程)

ctrl + z 挂起当前进程,放后台

ctrl + r(查看命令历史) history

ctrl + l(清屏,与clear命令作用相同)

方向箭头 上 下 可以查看执行过的命令

ctrl + a 行首 ctrl + e 行尾

ctrl + k 清除 ctrl+ w 清除单词

vim/vi是Unix / Linux上最常用的文本编辑器而且功能非常强大。

只有命令,没有菜单。

《大碗》编辑器版

周围的同事不是用VI就是Emacs,你要是用UltraEdit都不好意思跟人家打招呼...什么插件呀、语法高亮呀、拼写检查呀,能给它开的都给它开着,就是一个字:酷!你说这么牛X的一东西,怎么着学会也得小半年吧。半年!?入门都远着呢!能学会移动光标就不错了,你还别说耗不起,就这还是左右移动!!!

:

[图片上传失败...(image-a08366-1624438708894)]

命令模式:又称一般模式

编辑模式:又称底行模式,命令行模式

|

命令

|

作用

|

|

a

|

在光标后附加文本

|

|

A(shift + a)

|

在本行行末附加文本 行尾

|

|

i

|

在光标前插入文本

|

|

I(shift+i)

|

在本行开始插入文本 行首

|

|

o

|

在光标下插入新行

|

|

O(shift+o)

|

在光标上插入新行

|

|

命令

|

作用

|

|

:set nu

|

设置行号

|

|

:set nonu

|

取消行号

|

|

gg

G

|

到第一行

到最后一行

|

|

nG

|

到第n行

|

|

:n

|

到第n行

|

|

命令

|

作用

|

|

:w

|

保存修改

|

|

:w new_filename

|

另存为指定文件

|

|

:w a.txt

|

内容追加到a.txt文件中 文件需存在

|

|

:wq

|

保存修改并退出

|

|

shift+zz(ZZ)

|

快捷键,保存修改并退出

|

|

:q!

|

不保存修改退出

|

|

:wq!

|

保存修改并退出(文件所有者可忽略文件的只读属性)

|

不保存并退出:

1, 有修改,但是修改后的内容是不保存的

2, 有突发情况,导致窗口退出。修改文件之后,直接删除同名的.swp文件

|

命令

|

作用

|

|

x

|

删除光标所在处字符 nx 删除光标所在处后n个字符

|

|

dd

|

删除光标所在行,ndd删除n行

|

|

:n1,n2d

|

删除指定范围的行(eg :1,3d 删除了123这三行)

|

|

dG

|

删除光标所在行到末尾的内容

|

|

D

|

删除从光标所在处到行尾

|

|

命令

|

作用

|

|

yy、Y

|

复制当前行

|

|

nyy、nY

|

复制当前行以下n行

|

|

dd

|

剪切当前行

|

|

ndd

|

剪切当前行以下n行

|

|

p、P

|

粘贴在当前光标所在行下 或行上

|

|

命令

|

作用

|

|

r

|

取代光标所在处字符

|

|

R(shift + r)

|

从光标所在处开始替换字符,按Esc结束

|

|

u

|

undo,取消上一步操作

|

|

ctrl+r

|

redo,返回到undo之前

|

|

命令

|

作用

|

|

/string

|

向后搜索指定字符串 搜索时忽略大小写 :set ic

|

|

?string

|

向前搜索指定字符串

|

|

n

|

搜索字符串的下一个出现位置,与搜索顺序相同

|

|

N(Shift + n)

|

搜索字符串的上一个出现位置,与搜索顺序相反

|

|

:%s/old/new/g

|

全文替换指定字符串

|

|

:n1,n2s/old/new/g

|

在一定范围内替换指定字符串

|

% 指全文,s 指开始,g 指全局替换

eg: :41,44/yang/lee/c 从41行到44行,把yang替换为lee,询问是否替换

eg: :41,44/yang/lee/g 同上,不询问,直接替换

使用替换命令来添加删除注释

:% s/^/#/g 来在全部内容的行首添加 # 号注释

:1,10 s/^/#/g 在1~10 行首添加 # 号注释

vi里面怎么查命令??

:!which cp

vi里面怎么导入命令的结果?

:r !which cp

v 可视字符模式

V****(shift+v) 可视行模式,选择多行操作

**ctrl+v **可视块模式(列模式),操作列

I或者O进入插入模式。

1,图形化界面

2,setup 命令虚拟界面

3,修改配置文件(以网络方式为NAT示例)

vi /etc/sysconfig/network-scripts/ifcfg-eth0

BOOTPROTO=static

ONBOOT=yes

IPADDR=192.168.2.129

NETMASK=255.255.255.0

GATEWAY=192.168.2. 2 #网段2任意,IP地址2固定,网段为vmnet8的设置的IP网段

DNS1=114.114.114.114

DNS2=8.8.8.8

重启网络生效:

service network restart

命令路径:/bin/ping 执行权限:所有用户

作用:测试网络的连通性

语法:ping 选项 IP地址

-c 指定发送次数

ping 命令使用的是icmp协议,不占用端口

eg: # ping -c 3 127.0.0.1

英文:interface configure 命令路径:/sbin/ifconfig 执行权限:root

作用:查看和设置网卡网络配置

语法:ifconfig [-a] [网卡设备标识]

-a:显示所有网卡信息

ifconfig [网卡设备标识] IP地址 修改ip地址

英文:network statistics 命令路径:/bin/netstat 执行权限:所有用户

作用:主要用于检测主机的网络配置和状况

-a all显示所有连接和监听端口

-t (tcp)仅显示tcp相关选项

-u (udp)仅显示udp相关选项

-n 使用数字方式显示地址和端口号

-l (listening) 显示监控中的服务器的socket

eg:# netstat -tlnu 查看本机监听的端口

tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN

协议 待收数据包 待发送数据包 本地ip地址:端口 远程IP地址:端口

netstat –antpl

临时生效:

hostname 主机名

[图片上传失败...(image-ceed36-1624438708893)]

永久生效:修改配置文件

vi /etc/sysconfig/network

[图片上传失败...(image-2b9d9e-1624438708893)]

修改主机名和ip地址之间的映射关系

vi /etc/hosts

192.168.2.120 node-1.edu.cn node-1

可配置别名

[图片上传失败...(image-ec86cf-1624438708893)]

进程和程序的区别:

1、程序是静态概念,本身作为一种软件资源长期保存;而进程是程序的执行过程,它是动态概念,有一定的生命期,是动态产生和消亡的。

2、程序和进程无一一对应关系。一个程序可以由多个进程共用;另一方面,一个进程在活动中有可顺序地执行若干个程序。

进程和线程的区别:

进程: 就是正在执行的程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。

线程: 轻量级的进程;进程有独立的地址空间,线程没有;线程不能独立存在,它由进程创建;相对讲,线程耗费的cpu和内存要小于进程。

进程管理的作用?

判断服务器的健康状态

查看系统所有的进程

杀死进程

作用:查看系统中的进程信息

语法:ps [-auxle]

常用选项

查看系统中所有进程

ps应用实例 # ps -u or ps -l 查看隶属于自己进程详细信息

作用: 查看当前进程树

语法:pstree [选项]

-p 显示进程PID

-u 显示进程的所属用户

作用:查看系统健康状态

显示当前系统中耗费资源最多的进程,以及系统的一些负载情况。

语法:top [选项]

-d 秒数,指定几秒刷新一次,默认3秒(动态显示)

作用:关闭进程

语法:kill [-选项] pId

kill -9 进程号(强行关闭) 常用

kill -1 进程号(重启进程)

添加用户

语法:useradd [选项] 用户名

修改密码命令

语法:passwd [选项] [用户名]

用户密码:生产环境中,用户密码长度8位以上,设置大小写加数字加特殊字符,要定期更换密码。

ys^h_L9t

删除用户

-r 删除账号时同时删除宿主目录(remove)

作用:用于查看Linux文件系统的状态信息,显示各个分区的容量、已使用量、未使用量及挂载点等信息。看剩余空间

语法:df [-hkam] [挂载点]

-h(human-readable)根据磁盘空间和使用情况 以易读的方式显示 KB,MB,GB等 -k  以KB 为单位显示各分区的信息,默认

-M 以MB为单位显示信息 -a  显示所有分区包括大小为0 的分区

作用:用于查看文件或目录的大小(磁盘使用空间)

语法:du [-abhs] [文件名目录]

-a 显示子文件的大小

-h以易读的方式显示 KB,MB,GB等

-s summarize 统计总占有量

eg:

du -a(all) /home  显示/home 目录下每个子文件的大小,默认单位为kb

du -b /home  以bytes为单位显示/home 目录下各个子目录的大小

du -h /home 以K,M,G为单位显示/home 文件夹下各个子目录的大小

du -sh /home  以常用单位(K,M,G)为单位显示/home 目录的总大小 -s summarize

df命令和du命令的区别:

df命令是从文件系统考虑的,不仅考虑文件占用的空间,还要统计被命令或者程序占用的空间。

du命令面向文件,只计算文件或目录占用的空间。

作用:查看内存及交换空间使用状态

语法: free [-kmg]

选项:

-k: 以KB为单位显示,默认就是以KB为单位显示

-m: 以MB为单位显示

-g: 以GB为单位显示

清理缓存命令:

echo 1 /proc/sys/vm/drop_caches

在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 命令的基本结构如下:

find [paths] [expression] [actions]

find 命令接受一个或多个 路径 ( paths )作为搜索范围,并在该路径下 递归 地搜索。即检索完指定的目录后,还会对该目录下的子目录进行检索,以及子目录下的子目录。。。直到到达目录树底部。

默认情况下(不带任何搜索条件),find 命令会返回指定目录下的 所有文件 ,所以常常需要通过特定的 expression 对结果进行 筛选 。

find 命令默认的 action 是将所有检索结果打印至标准输出。可以通过自定义 action ,让 find 命令对搜索到的结果执行特定的操作。

这里先不做详细解释,简单地测试下 find 命令:

find 命令中的 -name 选项可以根据文件名称进行检索( 区分大小写 )。如需要忽略文件名中的大小写,可以使用 -iname 选项。

-name 和 -iname 两个选项都支持 wildcards 。如:

find /usr -name '*.txt' 查找 /usr 目录下所有文件名以 .txt 结尾的文件

find /usr -name '????' 查找 /usr 目录下所有文件名刚好为 4 个字符的文件

有些时候,你需要在搜索时匹配某个文件或目录的 完整路径 ,而不仅仅是匹配文件名。可以使用 -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'

也可以“翻转”任何其他的筛选条件,如:

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 -mtime +50 -mtime -100 检索 /usr 下 50 到 100 天之前修改过的文件

find /usr -type f -mtime 2 -amin 5 检索 /usr 下两天前被修改过且 5 分钟前又读取过的文件

-size 选项允许用户通过文件大小进行搜索(只适用于文件,目录没有大小……)。

表示文件大小的单位由以下字符组成:

另外,还可以使用 + 或 - 符号表示 大于 或 小于 当前条件。

find / -size +1G 检索文件大小高于 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

很多时候,我们只想匹配文件权限的一个 子集 。比如,检索可以直接被任何用户执行的文件,即只关心文件的执行权限,而不用管其读写权限是什么。

上述的需求可以通过以下命令实现: 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 -mtime +50 ')' -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 选项。

find / -type file -size +1G -ls 浏览所有 1G 以上大小的文件的详细信息

A Guide to the Linux “Find” Command

find 命令手册 : man find

Linux常用命令详解 | find

find 命令的基本结构如下:

find 命令手册 : man find

find 命令中的 -name 选项可以根据文件名称进行检索( 区分大小写 )。如需要忽略文件名中的大小写,可以使用 -iname 选项。

-name 和 -iname 两个选项都支持 wildcards 。如:

例1:查找 /usr 目录下所有文件名以 .txt 结尾的文件

例2:查找 /usr 目录下所有文件名刚好为 4 个字符的文件

例3:查以大写字母开头的文件

例4:查以两个小写字母和两个数字开头的txt文件

类似的还有:

-lname -ilname

-path -ipath

-regx -iregx

有些时候,你需要在搜索时匹配某个文件或目录的 完整路径 ,而不仅仅是匹配文件名。可以使用 -path 或 -ipath 选项。

例1:如查找 /usr 下所有文件名以 .txt 结尾的文件或目录,且该文件的父目录必须是 src 。可以使用以下命令:

例2:在当前目录除aa之外的子目录内搜索 txt文件

例3:在当前目录,不再子目录中,查找txt文件

如果只想搜索得到文件 或 目录,即不想它们同时出现在结果中。可以使用 -type 选项指定文件类型。

-type 选项最常用的参数如下:

例:检索 /usr 下所有文件名以 python 开头的目录

find 命令支持 -empty 选项用来检索 为空 的文件或目录。空文件即文件里没有任何内容,空目录即目录中没有任何文件或子目录。

例:检索用户主目录下所有的空目录

find 命令也允许用户对当前的匹配条件进行 “反义” (类似于 逻辑非 操作)。

如需要检索 /usr 下所有文件名 不 以 .txt 为后缀的文件。可以使用以下命令:

也可以“翻转”任何其他的筛选条件,如:检索 /usr 下所有内容不为空的文件

为了检索归属于特定用户的文件或目录,可以使用 -user 选项。

例:检索根目录下所有属主为 starky 的文件

类似于 -user 选项, -group 选项则可以根据文件或目录的 属组 进行检索。

有些时候,需要根据文件创建或修改的时间进行检索。

Linux 系统中,与文件相关联的时间参数有以下三种:

与此对应的是 find 命令中的 -mtime , -atime 和 -ctime 三个选项。

这三个选项的使用遵循以下示例中的规则:

检索 /usr 下两天前被修改过的文件

如果觉得 -mtime 等选项以 天 为单位时间有点长,还可以使用 -mmin , -amin , -cmin 三个选项。

查找比 aa.txt 新 的文件

查找比 aa.txt 旧 的文件

查找比aa.txt新,比bb.txt旧的文件

-size 选项允许用户通过文件大小进行搜索(只适用于文件,目录没有大小……)。

表示文件大小的单位由以下字符组成:

另外,还可以使用 + 或 - 符号表示 大于 或 小于 当前条件。

检索文件大小高于 1 GB 的文件

find 命令可以使用 -perm 选项以文件权限为依据进行搜索。

9.1使用符号形式

例1:如需要检索 /usr 目录下权限为 rwxr-xr-x 的文件,可以使用以下命令:

例2:搜索 /usr 目录下所有权限为 r-xr-xr-x (即系统中的所有用户都只有读写权限)的文件和目录,可以使用以下命令:

很多时候,我们只想匹配文件权限的一个 子集 。比如,检索可以直接被任何用户执行的文件,即只关心文件的执行权限,而不用管其读写权限是什么。

上述的需求可以通过以下命令实现:

其中 a=x 前面的 / 符号即用来表示只匹配权限的某个子集(执行权限),而不用关心其他权限的具体设置。

9.2使用数字形式

例如:搜索 /usr 目录下权限为 644 (即 rwxr-xr-x )的文件

find 命令默认是以 递归 的方式检索项目的,这有时候会导致得到的结果数量非常巨大。可以使用 -maxdepth 限制 find 命令递归的层数。

例如:搜索时向下递归的层数最大为 3

在之前的例子中有出现多个搜索条件的 组合 以及对某个搜索条件的 反转 。

实际上 find 命令支持 “and” 和 “or” 两种逻辑运算,对应的命令选项分别是 -a 和 -o 。通过这两个选项可以对搜索条件进行更复杂的组合。

此外还可以使用 小括号 对搜索条件进行 分组 。注意 find 命令中的小括号常需要用 单引号 包裹起来。因小括号在 Shell 中有特殊的含义。

如检索 /usr 下文件名以 python 开头且类型为目录的文件

该命令等同于:

更复杂的组合形式如:

例4:在除dir0及子目录以外的目录下查找txt后缀文件

说明:-a 应该是and的缩写,意思是逻辑运算符‘与’(); -o应该是or的缩写,意思是逻辑运算符‘或’(||), -not 表示非.

命令行的意思是:如果目录dir0存在(即-a左边为真),则求-prune的值,-prune 返回真,‘与’逻辑表达式为真(即-path './dir0*' -a -prune 为真),find命令将在除这个目录以外的目录下查找txt后缀文件并打印出来;如果目录dir0不存在(即-a左边为假),则不求值-prune ,‘与’逻辑表达式为假,则在当前目录下查找所有txt后缀文件。

-delete 选项可以用来删除搜索到的文件和目录。

例如:删除 home 目录下所有的空目录:

-exec 选项可以对搜索到的结果执行执行该参数所给出的shell命令。形式为 command {} \; ,注意{}与\;之间有空格 。每当 find 命令检索到一个符合条件的文件,会使用其完整路径取代命令中的 {} ,然后执行 -exec 后面的命令一次。

例1:如需要将 home 目录下所有的 MP3 音频文件复制到移动存储设备(假设路径是 /media/MyDrive ),可使用下面的命令:

其中的 大括号 ( {} )作为检索到的文件的 占位符 ,而分号( ; )作为命令结束的标志。因为分号是 Shell 中有特殊含义的符号,所以需要使用单引号括起来或前面加上转义符 \ 。

例2:查看当前目录下的所有普通文件,并在 - exec 选项中使用 ls -l 命令将它们列出

例3:在多个文件中检索某个指定的字符串。如在用户主目录下的所有文件中检索字符串 hello ,可以使用如下命令:

创建 Gzip 格式的压缩文件的命令为:

现在假设需要将用户主目录下所有的 MP3 文件添加到压缩包 music.tar.gz 中,直观的感觉是,其命令应为如下形式:

实际情况是,这样得到的 music.tar.gz 其实只包含一个 MP3 文件。原因是 find 命令 每次 发现一个音频文件,都会再执行一次 -exec 选项后面的压缩命令。导致先前生成的压缩包被覆盖。

可以先让 find 命令检索出所有符合条件的音频文件,再将得到的 文件列表 传递给后面的压缩命令。完整的命令如下:

如果想浏览搜索到的文件(目录)的详细信息(如权限和大小等),可以直接使用 -ls 选项。

例如:浏览所有 1G 以上大小的文件的详细信息

与exec作用相同,区别在于,在执行命令之前,都会给出提示,让用户确认是否执行

与 exec 作用相同 ,起承接作用。区别在于 |xargs 主要用于承接删除操作 ,而 -exec 都可用 如复制、移动、重命名等

例1:查找以ap或may开头的文件

例2:查硬连接数大于2的文件或目录

例3:查找含特定字符串的文件。查找当前目录下含有"the string you want find…"字符串的文件:

例4:从根目录开始查tmpfile,一旦查到马上删除

例5:如何用find查找某一天更改的文件?可以使用这一行命令来实现:

A Guide to the Linux “Find” Command

linux 搜索命令有哪些

文件搜索命令(只能搜索文件)

locate 文件名

在后台数据库中按文件名搜索,搜索速度快      /var/lib/mlocate(locate文件数据库)    这个数据库默认一天更新一次,强制更新命令:updatedb

按照/etc/updatedb.conf配置文件里面规则进行搜索

搜索命令的命令:whereis

whereis 命令名                                 作用:搜索命令所在路径及帮助文档所在位置

-b(只查找可执行文件)      -m(只查找帮助文件)

which  文件名    作用:搜索命令所在路径及别名

PATH环境变量:定义的是系统搜索命令的路径

find [搜索范围] [搜索条件]

find  /root   -nouser(搜索没有所有者的文件)

find  /var/log  -mtime +10 (查找10天前修改的文件)            atime(文件访问时间)  ctime(改变文件属性的时间)  mtime(修改文件内容的时间)

find   .  -size 25k(查找当前目录等于25k的文件)             find   .   -size   +10M(查找当前目录大于10M的文件)

find  /etc  -size +20k  -a  -size -50k (查找/etc下大于20k小于50k的文件)       -a(and)   -o(or)

find  /etc  -size +20k  -a  -size -50k -exec ls -lh {} \; (查找/etc下大于20k小于50k的文件,并显示详细信息) 《Linux就该这么学》 一起学习更多命令

ls -i 文件名(查看该文件的i节点)

grep [选项] 字符串 文件名

-i (忽略大小写)   -v(排除指定字符串)

Linux中的通配符:

*   :匹配任意内容      ?    :匹配任意一个字符        []    匹配任意一个中括号内的字符


本文名称:linux搜索命令or,linux操作系统的查找和搜索命令
链接URL:http://kswsj.cn/article/hscpog.html

其他资讯