十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
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
权限管理命令 chmod
英文愿意: change the permissions mode of a file
语法: chmod[{ugoa}{+-=}{rwx}] [文件或目录]
[mide = 421] [文件或目录]
-R 递归修改
权限的数字表示
r -- 4
w -- 2
x -- 1
rwxrw-r-- (4+2+1 = 7)
7 6 4
例子:mkdir /temp 创建了一个目录
touch /temp/testfile 在该目录下创建了一个test file文件
chmod 777 /temp 改变了一下该目录的权限
名称: chgrp
英文原意:change file group ownership
语法:chgrp [用户][文件或目录]
功能: 改变文件或目录的所属租
例子: useradd hl // 添加所有者
groupadd brother // 添加所有组
charp brother text // brother变成了text文件的所属组
注意:
1、所属组就是创建这的所属者的缺省组
2、linux中创建的文件缺少x(可执行)为了使系统更加安全
mask
0022
0特殊权限
022 ugo --- -w- -w-
1、文件搜索命令find
执行权限:find
语法:find[搜索范围][匹配条件]
功能描述:文件搜索
例子:
find /etc -name init (-iname 不区分大小写)
find /home -user(-group) hl
在根目录下查找所有者(所有组)为hl的文件
在目录/etc中查找文件init
init init init // 通配符
?init (?匹配单个字符)
find / -size +204800
在跟目录下查找大于100MB的文件 (100MB = 102400KB = 204800)
+n 大于 -n小于 n等于
find /etc -cmin -5
例子2:
find /etc -size + 163840 -a size -204800
在/etc下查找大于80MB小于100MB的文件
-a两个条件同时满足
-o两个条件满足任意一个即可
在/etc下查找5分钟内被修改的属性的文件和目录
-amin 访问时间 access
-cmin 文件属性 change
-mmin 文件内容 modify
2、文件搜索指令 locate
命名名称:locate
执行权限:所有用户
语法:locate 文件名
功能描述:在文件资料库中查找文件
例子: $ locate inittab
输出文件所在位置
locate和find的区别:
locate的查找速度很快,因为find是在分区和磁盘上查找,而locate是在资料库中查找
注意:如果资料库没有实时更新,所以locate可能会查不到要查询的文件。
即:
updatedb (升级文件的资料库)
loocate -i 文件名 (-i 不区分大小写)
3、文件搜索命令:which (更精确呦)
执行权限:所有用户
功能描述:搜索命令所在目录及别名信息
例子: which ls
alias(别名)
4、whiereis
执行权限:所有用户
语法: whereis[命令名称]
功能描述:搜索命令所在目录及帮助文档路径
例子: whereis ls
5、grep
执行权限:所有用户
语法:grep -iv[指定字串][文件]
功能描述:在文件中搜索字符串匹配的行并输出
-i 不区分大小写
-v 排除指定字符串
例子 grep mysql /root/install.log
补充: linux中 # 表示注释
命名名称:man
英文原意:manual
执行权限:所有用户
语法:man[命令或配置文件]
功能描述:获取帮助信息
例子: man ls # 查看ls命令的帮助信息
man services 查看配置文件sevices的帮助信息
补充:man 。。。。后
/-g :查询与g有关的信息
空格进行翻页
回车进行换行
按n继续查找
命令名称:useradd
执行权限:root
语法:useradd 用户名
功能描述: 添加新用户
例子: useradd HF
命令名称:passwd
执行权限:所有用户
语法:passwd 用户名
功能描述: 设置用户密码
例子: passwd HF
命令名称:who
执行权限:所有用户
语法:who
功能描述: 查看登录用户信息
例子: who
输出内容含义:
登录用户名 登录终端(tty本地登录、pds表述远程终端) 登录时间 登录主机ip地址
命令名称:w
执行权限:所有用户
语法:w
功能描述: 查看登录用户详细信息
例子: w
命令名称:gzip
英文原意:GNU zip
执行权限:所有用户
语法:gzip[文件]
功能描述: 压缩文件
压缩后文件格式:.gz
解压缩:gunzip 压缩文件
注意:gizp只能压缩文件,不能压缩目录
命令名称:tar
执行权限:所有用户
语法:tar 选项 [-zcf] [压缩文件名] [目录]
-c 打包
-v 显示详细文件
-f 指定文件名
-z 打包同时压缩
功能描述: 打包目录
压缩后文件格式:.tar.gz
命令名称:zip
执行权限:所有用户
语法:zip 选项[-r][压缩后文件名][文件或目录]
-r 压缩目录
功能描述: 压缩文件或目录
压缩后文件格式: zip
注意:zip是window和linux系统中通过用的压缩格式
命令名称:bzip2
执行权限:所有用户
语法:bzip2 选项 [-k] [文件]
-k 产生压缩文件后保留有源文件
功能描述: 压缩文件
压缩后文件格式: .bz2
注意: bzip2的压缩比例大,适用于压缩较大的文件
bunzip2解压缩
对目录压缩:tar.bz2
指令名称:write
指令权限:所有用户
语法:write 用户名
功能描述:给用户发消息 ,以ctrl + D保存
例子: write YX
命令名称:wall
英文原意:write all
执行权限:所有用户
语法:wall [message]
功能描述: 发广播信息
命令名称:ping
执行权限:所有用户
语法:ping 选项IP地址
-c 指定发送次数
功能描述: 测试网络连通性
例子: ping 192.168.1.156
命令名称:ifcongig
英文原意:interface configure
执行权限:root
语法:ifconfig 网卡名称 IP地址
功能描述:查看和设置网卡信息(设立之临时IP)
例子: ifconfig etho 192.168.1.156
etch0 本地真实网卡
lo 回环网卡 (用来本机通信个测试的)
cncap:。。网络名称是以太网
HWaddr: 16进制表示的 48位的 网卡的物理地址
addr:当前计算机IP地址
Bcast:当前网络地址
Mask:子网掩码
inet6 addr: 表示的是IPv6的地址信息
RX packets:接受数据包的总数量
TX packets:发送数据包的总数量
Base addtess: 网卡当中的物理位置
命令名称:mail (邮件命令)
执行权限:所有用户
语法:mail [用户名]
功能描述:查看发送电子邮件
发送:ctrl + D
查询: mail
例子: mail root
[图片上传中...(-d00bb9-1591253201012-0)]
命令名称:last
执行权限:所有用户
语法:last
功能描述:列出目前和过去登入系统的用户信息
命令名称:traceroute
执行权限:所有用户
语法:traceroute
功能描述:显示数据包到主机的路径
例子: traceroute
命令名称:netstat
执行权限:所有用户
语法:netstat [选项]
功能描述:显示网络相关信息
选项:
-t : TCP协议
-u : UDP协议
-l : 监听
-r : 路由
-n : 显示IP地址和端口号
例子:
netstat -tlun 查看本机监听的端口
netstat -an 查看本机所有网络链接
netstat -rn 查看本届路由表
命令名称:setup
执行权限:root
语法:setup
功能描述:配置网络(永久生效)
例子: setup
注意:配置网络结束后要重启网络服务
service network restart
挂在命令
命令名称:mount
执行权限:所有用户
语法:mount[-t 文件系统] 设备文件
例子: mount -t iso9660/dev/sr0/mnt/cdrom
命令名称:shutdown
[root@localhost~]#shutdown [选项] 时间
选项:- c : 取消前一个关机命令
- h:关机
- r :重启
特点:可以正确的关闭和保存服务,建议实用
其他关机命令
halt
poweroff (直接断电)
init 0
重启命令
reboot
init6
补充:init _ 的数字含义
init0 关机
init1 单用户(启动最小最核心的服务)
init2 不完全多用户,不含NFS服务(network file system 网络文件系统)
init3 完全多用户
init4 未分配
init5 图形界面
init6 重启
查询系统运行级别
runlevel
退出登录命令
logout
一个进程默认会打开标准输入、标准输出、错误输出三个文件描述符
文件描述符为0,小于号表示数据由文件流入命令
usage:
命令 file
#加入输入重定向,对输入文件进行计数
wc -l /etc/passwd
文件描述符为1,大于号表述数据由命令流入文件
所以: echo "hello" t.log 也可以写成 echo "hello" 1 t.log
会把文件的内容清空,再输入到新的文件
会把当前内容保持不变,然后在下一行进行追加
2 错误重定向,如果当前命令产生了错误,会把错误重定向到文件中,而不会打印到屏幕
无论内容正确还是错误都会把文件输出到文件中。
stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。
默认情况下, command file 将stdout 重定向到 file, command file 将stdin 重定向到 file。
如果希望 stderr 重定向到 file,可以这样写:
$ command 2file
如果希望 stderr 追加到 file 文件末尾,可以这样写:
$ command 2file 2 表示标准错误文件(stderr)
如果希望将 stdout 和 stderr 合并后重定向到 file,可以这样写:
$ command file 21 或者 $ command file 21
如果希望对 stdin 和 stdout 都重定向,可以这样写:
$ command file1 file2
command 命令将 stdin 重定向到 file1,将 stdout 重定向到 file2。
含义:将标准错误输出 重定向到 标准输出。
符号是一个整体,不可分开,分开后就不是上述含义了。
比如有些人可能会这么想:2是标准错误输入,1是标准输出,是重定向符号,那么"将标准错误输出重定向到标准输出"是不是就应该写成"21"就行了?是这样吗? 如果是尝试过,你就知道21的写法其实是将标准错误输出重定向到名为"1"的文件里去了