04_Linux基础-.&..-cat-tac-重定向-EOF-Shell-more-ps-less-head
04_Linux基础-.&..-cat-tac->&>>-EOF-Shell-more-ps-less-head-tail-sed-grep-which-whereis-PATH-bash-/usr-locate-find
一. 回顾
二. . .. 删不掉
三. cat
四. 重定向
五. here document
六. Shell 脚本
七. more
八. ps aux
九. less
十. head
十一. tail
十二. sed
十三. grep
十四. which
十五. 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
版权声明
本文仅代表作者观点,不代表博信信息网立场。