04_Linux 根底 -.&..-cat-tac->&>>-EOF-Shell-more-ps-less-head-tail-sed-grep-which-whereis-PATH-bash-/usr-locate-find
一. 回顾
回顾
// 将 /home/ 目录下的所有文件和文件夹复制到 /jindafu 目录下
cp /home/* . -r
#注:复制文件夹 接 -r 递归复制(因为提到了文件夹)
#注:所有 通配符 *
// 复制 /etc/hosts 文件到 jindafu, 不给予笼罩揭示
用 cp 的绝对路径
which cp 失去 cp 的门路
/usr/bin/cp /etc/hosts .
#注:不给予揭示 输出 cp 命令的绝对路径 因为 cp 命令是别名 所有会有揭示
// 将 xiena 目录改名为 xienana
mv xiena/ xienana
// 将 singer 目录下的所有文件复制到 hejiong 目录下
cp haiquan/singer/* hejiong/
#注:所有 通配符 *
#注:复制文件不接 -r
// 删除所有的 xienana 目录
find 命令 或 tree 查看 xienana 在哪 rm -rf 门路
find /hunantv/ -name“xienana”-exec rm -rf {} \;
// 查看目录构造 tree 查看类型 file
// echo $PS1 $PS2 怎么看 PS1 PS2
// hostname 查看主机名
// echo $SHELL 查看默认 shell(是 bash)// cat /ect/shells 查看机器里有哪些 shell
sh bash exit
#/etc 寄存配置文件
// d 目录
- 一般文件
l 链接文件
c 字符设施文件(显示)b 块设施文件(磁盘)// reboot 重启机器
// clear 清屏
// 别名 alias , unalias , vim /root/.bashrc
// env 环境变量 set 所有变量
二. . .. 删不掉
// rm -rf 不会删除暗藏文件
rm -rf .lixh 删除暗藏文件
. 和.. 删不掉
三. cat
// ls 查看文件夹里的内容
cat 1. 查看文件里的内容
2. 能够将多个文件连贯到一起输入
-n, --number 给输入的行进行编号
用途 2:cat tangliangfei.txt wangtc.txt(连接功能)先将 tangliangfei.txt 内容输入,再将 wangtc.txt 内容输入
tac 与 cat
// tac 逆序显示,从最初一行到第一行
不能接 -n
cat 正序显示,从第一行到最初一行 (有 - n 选项)
四. 重定向
// > 输入重定向,会笼罩原来的内容,如果文件不存在会主动新建
重定向:就是将在屏幕上输入的内容,扭转输入的方向,输入到文件里
>> 追加输入重定向,不会笼罩原来的内容,只是在开端追加,如果文件不存在会主动新建
> 会笼罩原来的内容,>> 不笼罩,开端追加
# cat tangliangfei.txt wangtc.txt >tang_wang.txt
# echo 123456789 >>tang_wang.txt(学会 cat 与 >、>> 的组合)
五. here document
// 生成指定内容的文件 --》here document --》次要用在写脚本生成指定的内容
// <<EOF 定义的完结字符串
当输出 EOF 的时候,完结 end of file
# cat >chenpeng.txt <<EOF(注 1:前面不肯定非得 EOF,但要起的有意义)> chen peng(注 2:1 个 > 符号,原来内容会被笼罩)> jiangsu
> xinhua
> nongda
> linux
> cali
> EOF(注 3:点回车)# cat >>cali.txt <<end(注 1:2 个 > 符号,内容追加,不笼罩)> sanchuang
> nongda
> changsha
六. Shell 脚本
// shell 脚本:其实是一个文件,文件外面有很多的 linux 命令,这个文件能够执行,被执行的时候,会执行文件里的所有的命令
# vim first_shell.sh
#!/bin/bash(注 1:申明这个脚本应用的解释器是 bash)mkdir -p /test(注 2:存在不报错,不存在就新建)cd /test
mkdir sc{1..100}
touch pengyf{1..100}.txt
cp /etc/hosts /test
cat >sanchuang.txt <<EOF(注 3:回车后间接打,文本文件里没有提示符 >)sanchuang hunan changsha furongqu hunannongda
feng de yong
linux
EOF(注 4:完结)echo "####################################"
cat -n sanchuang.txt
echo "####################################"
脚本写好了↑↑↑
# bash first_shell.sh 执行脚本(注:内容如下)####################################
1 sanchuang hunan changsha furongqu hunannongda
2 feng de yong
3 linux
####################################
// 脚本在执行的时候,是从第 1 条命令,自上而下执行,如果两头有命令执行失败,前面的命令还是会执行的(Python 两头出错,没有异样捕捉的话,不再执行)
七. more
// more 命令 分页显示(注 1:没有 - n 选项,cat 有 - n 选项)用处:全屏形式分页显示文件内容
交互操作方法:按 Enter 键向下逐行滚动
按空格键向下翻一屏、按 b 键向上翻一屏 back
按 q 键退出(注 2:显示完主动退出,与 less 的差异)
# more messages
八. ps aux
// # ps aux 查看 linux 以后运行的过程的信息 --》工作管理器(ps -aux 也能够)# ps -aux|more
# cat messages |more 和 more messages 一样
# cat -n messages |more 显示行号
九. less
// less 命令
用处:与 more 命令雷同,但扩大性能更多
交互操作方法:与 more 命令根本相似,但个别操作会有些出入【page down】【page up】上翻下翻页(注 1:more 不反对)显示完不退出,按 q 退出(注 2:与 more 的差异)(注 3:也反对空格、b、Enter,但凡 more 反对的 less 都反对)
# less messages
# cat messages |less
十. head
// head 命令(注 1:默认取前 10 行,间断的几行)用处:查看文件结尾的一部分内容(默认为 10 行)格局:head -n number 文件名
格局:head - 数字 文件名
cat -n passwd |head 显示前 10 行,有编号
head passwd 显示前 10 行,没有编号
head -5 passwd 显示前 5 行(没编号)head -n 5 passwd 显示前 5 行(没编号,与上一条命令成果一样)
十一. tail
// tail 命令
用处:查看文件结尾的少部分内容(默认为 10 行)格局:tail -n number 文件名
格局:tail - 数字 文件名
tail -f 文件名 = tailf # 注:tailf 不晓得怎么用
#注:tail -f 动静的监控文件开端的变动
tail passwd 取开端 10 行(无编号)cat -n passwd |tail 取开端 10 行(有编号)cat -n passwd |tail -5 取开端 5 行(有编号)cat -n passwd |tail -1 最初 1 行(有编号)cat -n passwd |tail -n 3 取开端 3 行(有编号)tail -n 2 passwd 显示最初 2 行
tail -n -2 passwd 与上条成果一样
tail -n +2 passwd 显示从第 2 行到开端(注 1:用途:统计有多少行的时候,不想显示首行,统计磁盘挂载的时候不想看到题目这一行)(注 2:df -Th 显示 linux 里的磁盘分区的应用状况)df -Th|tail -n +2 统计磁盘挂载不显示题目行
df -Th|tail -n +2|wc -l 统计行数
# tail -f feng.txt 动静的监控文件开端的变动(注 4:常常用来查看日志文件的变动,依据日志的记录去排错)(注 2:从新关上窗口连过来,左边批改文件内容,右边动静监控文件开端的变动,一有新的内容就显示)(注 3:Ctrl+C 强行终止)
tail -f 扩大
特地适宜看某些日志文件
/var 寄存动态变化的文件 variable 变量,变动的,可变的
log 日志:是程序记录它产生的事件
# cd /var/log(注 1:/var/log 寄存大量日志文件)# tail -f secure 查看 secure 日志文件(注 2:secure 平安)(注 3:别的窗口做操作,日志文件开端动静更新)
十二. sed
1. 取出 passwd 的第 3 行
# cat -n /etc/passwd|head -3|tail -1(注 1:先取前 3 行,再取最初 1 行,用 | 管道)# cat /etc/passwd|head -3|tail -1(注 2:与下面命令比,没有编号 3)2. 取出 passwd 文件的第 5 行到 10 行
#注:这种 先看开端 用 head 因为行数是从前到后计算的
# cat -n /etc/passwd|head |tail -6(注 3:先 head 取默认前 10 行,再取后六行)(注 4:从第 5 行到 10 行,tail -6,不是 -5)# cat -n messages |head -200|tail -101(100 到 200 行)3. 取出第 3 行,第 5 行,第 10 行
# sed -n '1p;3p;5p' passwd(注 5:- n 是选项,符合要求的选项显示进去,不是显示行号的意思)练习 3 扩大
// sed
-n 作用:只是显示符合要求的行(注 9:不符合要求的行不显示)1p;3p;5p
1p 显示第 1 行 p 是 print 命令
; 命令连贯符号
# cat -n passwd |sed -n‘1p;3p;5p’(注 6:显示 1、3、5 行,有编号)# sed -n '1p;3p;5p' passwd(注 7:没有编号)(注 10:用双引号””也能够)# cat -n passwd |sed -n '3p;5p;10p' 显示不间断的 3,5,10 行的内容 (这样写显示行号)
# cat -n passwd |sed -n '3,10p' 显示第 3 行到第 10 行的内容,两头是间断的
# cat -n passwd |sed '3,10p'(注 8:sed 后不接 - n 的话,会显示所有的行[包含不符合要求的行],只不过 3 到 10 行输入两遍,所有肯定要接 -n)总结:sed 1. 显示间断的 2. 显示不间断的
十三. grep
// grep 文本过滤(过滤的是文件,不是文件夹目录)grep“root”/etc/passwd 蕴含 root 的行
grep“^liang”/etc/passwd 以 liang 结尾的行
grep“bash$”/etc/passwd 以 bash 结尾的行
Ctrl + c 终止
// 文本处理三剑客 sed grep awk
十四. which
which 查找可执行文件并显示所在的地位
搜寻范畴由 PATH 环境变量指定
# which mkdir
/usr/bin/mkdir
# cd /usr/bin/
# ll mkdir
-rwxr-xr-x. 1 root root 195192 4 月 10 02:53 mkdir
rwxr-xr-x 权限
r 读 read --》cat vim
w 写 write --》vim >>
x 执行 execute ---》运行
# ll first_shell.sh
-rw-r--r--. 1 root root……(注 1:脚本无可执行权限)# bash first_shell.sh(注 2:用 bash 去执行它)# chmod +x first_shell.sh(注 3:给它可执行权限)-rwxr-xr-x. root root……(注 4:有可执行权限了)# ./first_shell.sh(注 5:间接执行,间接在以后终端执行,以后 bash 执行)# /lianxi/first_shell.sh(注 6:接绝对路径,接文件,间接执行)# chmod -x first_shell.sh(注 7:勾销可执行权限)# /lianxi/first_shell.sh
-bash: /lianxi/first_shell.sh: 权限不够(勾销可执行权限后不能间接执行)
whereis
// whereis 查找命令放到哪里(注 1:跟 which 很像)(注 2:没什么用,man 手册在哪里不是很重要)# whereis mkdir
mkdir: /usr/bin/mkdir /usr/share/man/man1/mkdir.1.gz(注 2:压缩文件,是它的文档)1. 查看命令安放门路
2. 该命令 man 手册的门路(man 的时候看的内容的寄存门路)//whereis 和 which 的区别
Which 不显示 man 手册的门路,whereis 显示 man 手册的门路
# whereis mkdir
mkdir: /usr/bin/mkdir /usr/share/man/man1/mkdir.1.gz
# which mkidr
/usr/bin/mkdir
//whereis 和 which 都是到 PATH 变量里去找的(共同点)
十五. PATH
//PATH 是门路
which 命令在查找命令的时候,会到 PATH 变量指定的门路下查找
# which fengdeyong
/usr/bin/which: no fengdeyong in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
(备注 1:红色为门路 备注 2:多个文件夹用:冒号隔开)
# echo $PATH(注 3:$PATH 援用 PATH 变量)/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
查找的程序是从左往右找,如果在第 1 个外面找到了,就不会往后面找,以此类推
深刻了解 PATH 变量的作用
1. 编写一个 schello.c 的文件
# vim schello.c(注 1:编写脚本如下)#include<stdio.h> int main(){printf("hello,world\n");(注 2:\n 换行)printf("i am cali\n"); return 0; } # file schello.c schello.c: C source, ASCII text(注 3:C 语言文件,文本文件,机器不能辨认)
2. 编译成二进制程序文件
gcc 是 linux 里的一个编译器,将 c 源码文件编译成二进制文件
gcc 是 linux 里的一个编译器,将 c 源码文件编译成二进制文件
# yum install gcc -y # gcc -o schello schello.c(注 1:-o 输入一个二进制文件)(注 2:编译 schello.c 的命令)# ls(↑↑注 3:schello 产生的文件,schello 原来文件)schello schello.c(注 2:生成绿色可执行权限的文件 schello)# ll 总用量 20 -rwxr-xr-x. 1 root root 12744 9 月 18 15:12 schello -rw-r--r--. 1 root root 93 9 月 18 15:08 schello.c # ./schello(注 4:./ 运行)# /lianxi/sc/schello(注 5:绝对路径运行,./ 相对路径或绝对路径都能够运行)# schello 不能运行(注 6:linux 不晓得 schello 放在哪里,它只会到 PATH 变量里去找)-bash: schello: 未找到命令(注 7:PATH 变量没有以后所在门路,没有 /lianxi/sc)(解决如下)
要让 Linux 零碎晓得咱们的命令在哪里?
1. 适应 PATH 变量,将咱们的命令复制到 PATH 变量已有的门路下
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
# cp schello /usr/local/bin/
# schello(注 1:胜利运行)hello,world
i am cali
# which schello
/usr/local/bin/schello(注 2:复制到 PATH 变量的门路下后 bash 能够找到 schello)2. 批改 PATH 变量,增加咱们本人的命令所在的门路
①长期批改 PATH 变量
# PATH=/lianxi/sc:$PATH 长期批改 PATH 变量(注 3:先援用 PATH 变量的值,在和 /lianxi/sc: 字符串拼凑在一起再赋值给 PATH 变量)(注 3:$PATH——》/lianxi/sc:+$PATH 重新组合——》赋值 PATH 变量 从右到左)# echo $PATH
/lianxi/sc:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin(注 4:新的 PATH 变量,后面多了 /lianxi/sc:)[root@sanchuang-linux sc]# which schello(注 5:which 能够找到)/lianxi/sc/schello
# schello(注 6:bash 能够运行)hello,world
i am cali
②永恒无效
批改文件,增加 PATH 变量,让它永恒失效
# vim /root/.bashrc
.bashrc 这个文件是 linux 零碎开机启动或者用户登录都会运行这个文件里的命令,所以才会永恒无效
PATH=/lianxi/sc:$PATH(注 1: 打进去,放到最初一行)
// mkdir 用 C 写的
// # yum install python3 -y 装置 python3 软件
# python3(注 1:进入 Python3 解释器)>>> a = 10(注 2:提示符 >>>)>>> b = 20(注 4:Python 不须要编译,Python 代码间接运行,用 Python 解释器去解释)>>> sg = "tangliangfei"
>>> c = a + b
>>> c
30
>>> print(sg)(注 3:输入)tangliangfei
>>> exit()(注 5:exit()退出出 exit()是 exit 函数)
// 扩大
.py 结尾的文件,是 python 程序文件
.sh 结尾,shell 脚本
.c 结尾,c 语言
# vim sc_py_hello.py
#!/usr/bin/python3(注 1:which python3——》/usr/bin/python3)(注 2:申明脚本是 Python 脚本,外面的命令用 Python3 解释器去解释)username = input("please input your name:")(注 3:引号外面只是提示符,提醒输什么)(注 4:input()函数会接管你输出的货色,赋值给 username)age = input("please input your age:")
print(f"your name is {username} ,your age is {age}")(注 5:print(f) 语法)(注 6:{username}{age} 援用变量的值)# ls
schello schello.c sc_py_hello.py
# python3 sc_py_hello.py(注 7:间接执行 Python3,相似于 bash a.sh)please input your name:cali
please input your age:18
your name is cali ,your age is 18
[root@sanchuang-linux sc]# cat sc_py_hello.py
# /lianxi/sc/sc_py_hello.py(注 1:不能间接运行,如下 权限不够,pwd 查看门路)-bash: /lianxi/sc/sc_py_hello.py: 权限不够
# chmod +x sc_py_hello.py(注 2:给它可执行权限)# /lianxi/sc/sc_py_hello.py(注 3:能够间接执行了)please input your name:wangtc
please input your age:18
your name is wangtc ,your age is 18
// 怎么让 sc_py_hello.py 在 PATH 变量里运行
# which sc_py_hello.py(注 1:能运行,因为之前在 PATH 变量里曾经增加这个门路了(/lianxi/sc))# sc_py_hello.py(注 2:能运行,因为之前在 PATH 变量里曾经增加这个门路了(/lianxi/sc))# echo $PATH
/lianxi/sc:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
总结:跟是用什么语言写的关系不大
1. 把它放到 PATH 变量所在的门路外面,并 2. 给它可执行权限 就能间接运行
# chmod -x sc_py_hello.py(注 3:勾销可执行权限)# sc_py_hello.py(注 4:不给它可执行权限,门路放在 PATH 变量所在的门路下,也不能间接执行)-bash: /lianxi/sc/sc_py_hello.py:权限不够
总结:写的 Python 程序,肯定要 1. 给它可执行权限,并 2. 把它放到 PATH 变量所在门路上面,不然不能执行
// 扩大(注 2: 总结: 文件名字很长,想敲个短一点的命令,思考用别名 [快捷键])# alias sc_py_hello=sc_py_hello.py 定义别名,能够缩短命令的长度
# sc_py_hello(注 1:不想输这么长,能够应用别名,别名能够用来偷懒)please input your name:feng(运行胜利,条件是在 PATH 变量门路下和可执行权限,如下面的操作)please input your age:19
your name is feng ,your age is 19
# which sc_py_hello
alias sc_py_hello='sc_py_hello.py'
/lianxi/sc/sc_py_hello.py
十六. bash
//bash 是 linux 十分好的 shell 解析器(注 1:2 件事要做)1. 查找命令 --》PATH 变量的门路下
2. 通知内核去启动命令(运行这个命令)
十七. /usr
// /usr 寄存 linux 程序的目录 unix system resource
/usr/bin 寄存二进制程序,所有的用户都能够应用 binary
/usr/sbin 寄存二进制程序,有比拟高的权限(root)的用户执行的程序 super user binary
# which useradd(注 1:查找 useradd 命令门路)/usr/sbin/useradd(注 2:寄存在 sbin 目录下)# su - xulilin(注 3:切换为普通用户)$ which useradd
$ /usr/sbin/useradd
$ useradd xu123(注 4:普通用户不能执行 sbin/ 下高级别命令)……报错 useradd:Permission denied(注 5:权限被回绝)
十八. locate
// locate 知识点(注 4:须要装置)(注 5 常常须要更新# updatedb)# yum provides locate -y 查问 locate 是哪个软件包提供的(注 1:新知识点)mlocate-0.26-20.el8.x86_64 : An utility for finding files by name(注 3:yum provides …… -y 查问某命令是哪个软件包提供的)(注 2:从后果晓得 mlocate 提供 locate 命令)# yum install mlocate -y 装置 mlocate 软件
locate 命令
格局:locate 文件名(注 5:locate 是到本人的数据库查找的,能具体到 / 上面,且必须更新本人的数据库)依据每天更新的数据库 (/var/lib/mlocate) 查找,速度块
/var/lib/mlocate/mlocate.db
database 数据库(注 6:db 的解释)数据库里的内容还是依据 / 目录下的内容生成
每天会自动更新数据库 /var/lib/mlocate/mlocate.db
手动更新数据库 updatedb
# updatedb 生成和更新数据库 mlocate.db(注 1:手动更新)# cd /var/lib/mlocate/
# ls
mlocate.db
# locate mkdir(注 2:将 linux 零碎外面文件名外面蕴含了 mkdir 的文件全副找进去)/usr/bin/mkdir
/usr/lib/python3.6/site-packages/pip/_vendor/lockfile/mkdirlockfile.py
/usr/lib/python3.6/site-packages/pip/_vendor/lockfile/__pycache__/mkdirlockfile.cpython-36.opt-1.pyc
/usr/lib/python3.6/site-packages/pip/_vendor/lockfile/__pycache__/mkdirlockfile.cpython-36.pyc
/usr/share/man/man1/mkdir.1.gz
# which mkdir(注 3:只是找到 /usr 下的 mkdir,其余中央的 mkdir 没找进去)/usr/bin/mkdir
locate 查找的范畴:/--》mlocate.db 里去查找(注 2:在 根上面本人的数据库 mlocate.db 上面去查找)形式:含糊查找,文件名里蕴含就能够
毛病:新的文件,有时候找不到,因为没有更新数据库 --》updatedb(注 3:手动更新)能够查找任何文件(注 4:新建的文件,# updatedb 手动更新数据库,否则找不到)which 查找的范畴:PATH 变量
形式:准确查找(注 1:文件名必须截然不同)只能查找命令
which、whereis、locate、find
// which、whereis、locate、find 命令查找类
Which、whereis 只能找命令
loacte 也能够查找一般文件、能够查找任何文件
十九. find
//* find 命令
格局:find [查找范畴] [查找条件] [动作] find 能够找 1. 命令、2. 文件(即任何文件)(注 1:交融了 which、whereis、locate 所有性能)find 命令 用处:用于查找文件或目录 格局:find [查找范畴] [查找条件] [动作] 罕用查找条件 ==-name==:按文件名称查找 ==-iname==:按文件名称查找, 不辨别大小写 ==-size==:按文件大小查找 -user:按文件属主查找 ==-type==:按文件类型查找 -perm:按文件权限查找 ==-mtime==:按文件更改工夫查找 -newer:按比某个文件更新的查找
-name 和 -iname
# find /lianxi -name "lixh.txt"(注 1:准确查找,-name 依据文件名来)/lianxi/lixh.txt
# find / -name "schello"(注 2:准确查找,能够 / 下查找)/lianxi/sc/schello
# find / -name "schello*"(注 3:* 含糊查找,能够 / 下查找)/lianxi/sc/schello.c
/lianxi/sc/schello
# find / -name "li*.txt"(注 4:* 含糊查找)# find / -iname "lixh.txt"(注 5:-iname 查找的文件名不辨别大小写)/lianxi/lixh.txt
/lianxi/LIXH.TXT
-size(大小)# ll -h 看文件夹下的每个文件的大小
# du -a 查看文件夹下的每个文件的大小(单位 KB)du -ah 查看文件夹下的每个文件的大小(单位 K、M、G)# find /boot -size +1M(注 1:+1M 大于 1M 的 全副找进去)(注 2:-1M、1M:小于 1M,等于 1M)/boot/grub2/fonts/unicode.pf2(注 3: 查找的后果不是特地精准)/boot/initramfs-4.18.0-193.el8.x86_64kdump.img
/boot/initramfs-4.18.0-193.el8.x86_64.img
-type(类型)# find . -type d(注 1:查找目录)# find . -type f(注 2:查找一般文件)# find . -type l(注 3:链接文件)# find . -type c(注 4:字符设施文件)# find . -type b(注 5:块设施文件)# find . -type p(注 6:管道文件)# find . -type s(注 7:socket 文件)(过程与过程通信的文件)
-mtime(以 24 小时为单位)按文件更改工夫查找
-mmin(以分钟为单位)# find . -time +1 1 天以前
# find . -time -1 1 天以内
# find . -mmin -30 30 分钟以内
# find . -mmin +30 30 分钟以前
-user(属于哪个用户创立的文件)(用途不大)# find . -user root
# find / -user cali
-newer(比指定文件更新的文件,后建的文件)# find . -newer feng.txt
// 非凡查找条件
-o:逻辑或,只有所给的条件中有一个满足,寻找条件就算满足 or
-not : 逻辑非,在命令中可用“!”示意。该运算符示意查找不满足所给条件的文件
-a:逻辑与,零碎默认是与,可不加,示意只有当所给的条件都满足时,寻找条件才算满 and
find /boot -size +1024k -a -name“vmlinuz*”(注 1:逻辑与 - a 可不加,零碎默认逻辑与)find /boot -size +1024k -o -name“vmlinuz*”find . -user nie -type f -size +1k -o -name "vmlinuz*"
find . -user nie -type f \(-size +1k -o -name "vmlinuz*" \)(注 3:()扭转了优先级,\ 解释在下方)(注 5:\( \)即() 扭转了优先级)find /home!-user hello -exec ls -ld {} \;
\ 转义字符(注 2:因为小括号 () 有特殊作用,接上 / 当前让它示意只是小括号)默认状况下 - a 的优先级高,先执行逻辑与(-a),再执行逻辑或(-o)# find / -iname "*.conf" -size +1k -type f -user root -o -size +10M(注 4:后面先组合成一个条件,要么满足 - o 后面的,要么满足 - o 前面的条件)
// 扩大,接下面的命令 -exec 和 -ok
# find /lianxi -name "li*.txt" -exec rm -rf {} \;(注 1:后面是查找,-exec 示意要执行的动作)相干解释如下
-exec 执行前面的命令
rm -rf 具体删除命令
{} 代表后面的 find 查找进去的内容,了解为一个容器寄存后面 find 查找到的内容
\; 示意 find 命令完结符号
# find /lianxi -name "*.txt" -size +1k -type f -exec cp {} /fengdeyong \;(注 2:文件名.txt 结尾的,大小大于 1k 的,文件,拷贝到 fengdeyong 外面)(注 3:find 找 /lianxi 下的每一层)-ok
-ok 让你确认一下,再执行
# find . -name "*wang*" -ok rm -rf {} \;
< rm ... ./wangtc.txt > ? y
< rm ... ./tang_wang.txt > ? y
总结:-exec 执行命令,不给与确认(写脚本罕用,不便)-ok 执行命令,须要确认
-maxdepth 查找文件时,目录的深度
# find . -name bb
./aa/bb
./aa/bb/bb
./bb
# find . -maxdepth 1 -name bb(注 2:只挖 1 级)./bb
# find . -maxdepth 2 -name bb(注 3:只挖 2 级)./aa/bb
./bb
# find . -maxdepth 3 -name bb(注 4:只挖 3 级)./aa/bb
./aa/bb/bb
./bb(注 1:不接 -maxdepth 的话,有多少层挖多少层)# find /lianxi -name "*.txt"(注 6:不接 -maxdepth,货色太多了,挖的太深了)/lianxi/tangliangfei.txt
/lianxi/chenpeng.txt
/lianxi/cali.txt
/lianxi/feng.txt
/lianxi/aa/bb/feng.txt
/lianxi/aa/feng.txt
# find /lianxi -maxdepth 1 -name "*.txt"(注 5:这种状况用的多,只想找 1 层的,只挖 /lianxi 上面的,子文件夹、子子文件夹上面都不要)/lianxi/tangliangfei.txt(注 7:显示如下)/lianxi/chenpeng.txt
/lianxi/cali.txt
/lianxi/feng.txt
//!取反 的应用,接下面的命令(注 1:lianxi 上面的不是 *.txt 的)# find /lianxi -maxdepth 1 ! -name "*.txt"(只对前面的条件取反)/lianxi
/lianxi/passwd
/lianxi/first_shell.sh
/lianxi/messages
/lianxi/sc
/lianxi/LIXH.TXT
/lianxi/aa
/lianxi/bb