总结 1-7~1-12
1-7-文件权限管理
1-8-rhel7-软件包管理
1-9-文件的归档和压缩
1-10-RHEL7-Linux系统进程管理-
1-11-重定向和文件查找
1-12-find命令的使用
#######################################
1-7-文件权限管理
三种访问控制权限:文件拥有者、文件拥有者同组人员、其他人
文件权限描述信息:ls –l 1.txt 或 ll 1.txt
-rw-r--r--
其中第一个字符描述文件类型
第2-4个字符描述文件拥有者权限
第5-7个字符描述文件拥有者同组人员权限
第8-10个字符描述其他人权限
文件类型描述有:
- 普通文件、
d 目录,directory
l 链接文件、link
c 字符设备、character
b 块设备、blocks
p 管道设备、pipes
s 套接字文件、pipes
可根据文件类型查找文件,如下:
find / –type s # s是文件类型描述符 /搜索目录
文件的特殊权限:
Linux系统中,文件除了拥有读、写、执行权限外,还有一些特殊权限
可使用命令lsattr(查看)和chattr(修改)特殊权限
也可使用命令chmod命令来修改特殊权限
这里只讲三个:s(SUID、SGID)、SBIT(Sticky)
s(SUID):可执行文件搭配这个权限,便能得到特权,任意存取该文件的所有者能使用的全部系统资源。(符号表示:s,显示在拥有者权限x位置上)
s(SGID):1、设置在文件上面,其效果与SUID相同,只不过是获取文件所属组能使用的全部系统资源。2、设置在目录上,则所有属组用户(即与目录属组相同的用户),在这个目录中创建的文件的属组不是用户同名的组,而是与该目录的属组相同,所以所有属组用户都可以删除这个目录中的文件(符号表示:s,显示在属组权限x位置上)
SBIT(Sticky):作用是防止别人删除掉别人的资料(只针对目录、对文件无效),这个属性,很好的解决了上面的问题。(符号表示:t,显示在其他人权限x位置上)
因为SUID、SGID、Stick占用了x的位置,所以以大小写来区分,其是否有执行权限。小写表示带有执行权限。
文件权限操作命令:chmod
作用:修改文件权限
Usage:chmod [u|g|o]+[rwx] {文件名}
chmod [000-777] {文件名}
注:文件权限描述--->三位数字
r-- ---> 4
-w- ---> 2
--r ---> 1
r-xr--r-- ---> 6 4 4 ---> 644
rwxr-xr-x ---> 7 5 5 ---> 755
文件所有权变更:chown
作用:修改文件拥有者和属组
Usage:chown [user:group] {文件名} #同时修改属主和属组
chown [user] {文件名} #修改属主
chown [:group] {文件名} #修改属组
文件创建时默认权限 umask:
umask设置文件创建时默认权限,它与chmod的效果相反,采用补码的形式
umask设置的是权限补码,chmod设置的是文件权限码。
在/etc/profile、$[HOME]/.bash_profile、$[HOME]/.profile中
存在设置umask值的语句
#######################################
1-8-rhel7-软件包管理
RHEL7中,有三种管理软件包的方式:
1、rpm命令
2、yum命令
3、编译源码安装软件包
rpm命令管理软件包
选项:-ivh ---> 安装 --nodeps #不验证依赖关系
-Uvh ---> 升级
-e ---> 卸载
-qf ---> 查询文件所属安装包
-qa ---> 查询所有已安装软件包
-qp ---> 查询软件包是否已安装
-qi ---> 查询软件包信息
-qd ---> 显示被标注为文档的文件列表
-qc ---> 显示被标注为配置文件的文件列表
-ql ---> 显示软件包中的文件列表
rpm软件包下载地址(推荐):
http://rpmfind.net/
http://rpm.pbone.net/
http://www.rpmseek.com/index.html
http://sourceforge.net
RPM缺点:rpm命令需要自己下载软件包,并且rpm命令不会解决其依赖关系,需要我们手动下载依赖关系包。
yum命令----Yellowdog Updater Modified
(安装软件包时,可分析其依赖关系,并安装依赖包)
yum命令安装软件包时,可以解决其依赖关系问题、自动下载软件包。基于C/S架构
yum源分为本地yum源和网络yum源
在RHEL中,需要激活才可以使用网络yum源
(CentOS使用的是免费的YUM源哦)
配置好本地yum源后,才可以使用yum来安装软件包
本地yum配置文件格式如下:
[server_name] #中括号中不要出现空格、不然会报错
name=server name #yum源名称
baseurl=file://[filepath] # yum源路径 [filepath] 是本地yum的路径
enable=[0|1] # 是否启用yum源 0不启用 1启用
gpgcheck=[0|1] # 使用公钥检验rpm的正确性 0不检验 1检验
配置好yum源后,需要清除yum缓存,并生成软件包信息:
yum clean all #清除缓存
yum list #生成信息
Usage:yum [options] [command] [package ...]
command:
install #安装 update #升级
remove | erase #卸载
list #列出所有软件包 info #查看软件包信息
clean #清除软件包信息 grouplist #查看软件包组
groupinstall #安装软件包组
search string #查找string
deplist # List a package's dependencies
例如:
yum –y install httpd #安装apache服务命令
yum deplist httpd #查询apache的依赖关系
源码包--源码包安装流程
安装流程:
1、解压 ---> tar -xf[ j | J | z ] {filepath}
j ---> tar.bz2 、 J ---> tar.xz 、 z ---> tar.gz
2、./configure #编译 --->
--prefix= #指定安装路径 --user= #指定用户 --group= #指定用户组
#一般解压后,编译程序都在当前目录下configure,若没有找到,可以打开README文件查看。
3、make #生成makefile ---> make –j 4 #四线程
4、make install #安装
-------------------------------------
实验:安装apache服务器(RPM)
#查询软件包是否安装
which httpd
rpm –q httpd
#安装两个依赖包
rpm -ivh /mnt/Packages/mailcap-2.1.41-2.el7.noarch.rpm
rpm -ivh /mnt/Packages/httpd-tools-2.4.6-40.el7.x86_64.rpm
#安装httpd
rpm –ivh /mnt/Packages/httpd-2.4.6-40.el7.x86_64.rpm
yum deplist httpd #查询一下软件包依赖关系
实战:安装nginx服务器(源码包)
上传nginx-1.11.3.tar.gz #安装包
tar zxf nginx-1.11.3.tar.gz -C /usr/src/ #解压包,-C指定路径
useradd -s /sbin/nologin -M nginx #添加nginx用户,维护服务
tail -1 /etc/passwd #检查用户添加结果
cd /usr/src/nginx-1.11.3/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
echo $?
make -j 4
echo $?
make install
httpd开启状态?!
实战:从光盘中提取二进制包并恢复丢失的文件
-------------------------------------
rpm2cpio - Extract cpio archive from RPM Package Manager (RPM) package.
Usage: rpm2cpio [filename]
Description:rpm2cpio converts the .rpm file specified as a single argument to a cpio archive on standard out. If a '-' argument is given, an rpm stream is read from standard in.
Example:
# rpm2cpio rpm-1.1-1.i386.rpm
# rpm2cpio - < glint-1.0-1.i386.rpm
# rpm2cpio glint-1.0-1.i386.rpm | cpio –dium
rpm2cpio /mnt/Packages/httpd-2.4.6-40.el7.x86_64.rpm | cpio –idv ./etc/httpd/conf/httpd.conf
-------------------------------------
cpio - copy files to and from archives
三种运行模式:
Copy-out mode “-o” #cpio copies files into an archive.
Copy-in mode “-i” #cpio copies files out of an archive or lists the archive contents.
Copy-pass mode “-p” #cpio copies files from one directory tree to another, combining the copy-out and copy-in steps without actually using an archive.
Usage:
Description:GNU cpio is a tool for creating and extracting archives, or copying files from one place to another. It handles a number of cpio formats as well as reading and writing tar files.
Example:
# ls | cpio -ov > directory.cpio
# find . -print -depth | cpio -ov > tree.cpio
# cpio -iv < directory.cpio #恢复.cpio中的文件
# cpio -idv < tree.cpio #恢复.cpio中的文件
# find . -depth -print0 | cpio --null -pvd new-dir
-------------------------------------
rpm2cpio /mnt/Packages/httpd-2.4.6-40.el7.x86_64.rpm | cpio –idv ./etc/httpd/conf/httpd.conf
######################################
1-9-文件的归档和压缩
归档文件后缀:.tar、.gz、.bz/bz2、.xz、.zip、.rar等
tar命令、zip命令、rar/unrar命令
tar命令:(.gz\.bz2\.bz\.tar\.xz等归档压缩包)
Usage: tar [option...] [FILE]...
Example:
# tar -cf archive.tar foo bar # Create archive.tar from files foo and bar.
# tar -tvf archive.tar # List all files in archive.tar verbosely.
# tar -xf archive.tar # Extract all files from archive.tar.
OPTIONS:(常用选项)
-c 创建 -f指定创建文件 -v显示过程 -x 提取文件 -z .gz结尾文件解压
-j .bz\.bz2结尾文件解压 -J .xz结尾文件解压 -C 指定解压路径
zip、unzip命令:(.zip)
Usage: zip options archive_name file file ...
Example:
zip z file.txt # Add file.txt to z.zip (create z if needed)
zip z * # Zip all files in current dir
zip -r z . # Zip files in current dir and subdirs also:
unzip -l foo.zip - list files in short format in archive foo.zip
unzip -t foo - test the files in archive foo
unzip -Z foo - list files using more detailed zipinfo format
unzip foo - unzip the contents of foo in current dir
unzip -a foo - unzip foo and convert text files to local OS
rar、unrar命令:(.rar)
rar命令linux不默认安装,需到网络上下载安装
http://www.rarlab.com/download.htm(已经配置好,下载后,直接运行即可!)
rarlinux-x64-5.4.0.tar.gz
安装如下:
tar -zxf rarlinux-x64-5.4.0.tar.gz -C /usr/local/
cd /usr/local/rar
make install
Usage: rar <command> -<switch 1> -<switch N> <archive> <files...>
<@listfiles...> <path_to_extract\>
file命令:determine file type
Usage: file [OPTION...] [FILE...]
OPTIONS:
-b 不显示文件名 -c 显示命令执行过程(便于排错) -C 检查指定文件有无格式错误
-d 将任何系统测试应用到软件 -z 探测压缩过的文件类型
-i output MIME type strings -L 显示连接指向的文件类型
-s treat special (block/char devices) files asordinary ones
file返回结果及含义:
empty 空文件
English text #英文正式文件
directory #目录文件
assembler program text #汇编语言程序的文本文件
ascii text #ASCII编码的文本文件
command text #命令语言编写的命令正文程序
c program #c语言正文程序
relocation text #用于连接的目标文件
executable #可执行的目标代码文件
Examples:
$ file file.c file /dev/{wd0a,hda}
file.c: C program text
file: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
dynamically linked (uses shared libs), stripped
/dev/wd0a: block special (0/0)
/dev/hda: block special (3/0)
$ file -s /dev/wd0{b,d}
/dev/wd0b: data
/dev/wd0d: x86 boot sector
$ file -s /dev/hda{,1,2,3,4,5,6,7,8,9,10}
/dev/hda: x86 boot sector
/dev/hda1: Linux/i386 ext2 filesystem
/dev/hda2: x86 boot sector
/dev/hda3: x86 boot sector, extended partition table
/dev/hda4: Linux/i386 ext2 filesystem
/dev/hda5: Linux/i386 swap file
/dev/hda6: Linux/i386 swap file
/dev/hda7: Linux/i386 swap file
/dev/hda8: Linux/i386 swap file
/dev/hda9: empty
/dev/hda10: empty
$ file -i file.c file /dev/{wd0a,hda}
file.c: text/x-c
file: application/x-executable
/dev/hda: application/x-not-regular-file
/dev/wd0a: application/x-not-regular-file
#######################################
1-10-RHEL7-Linux系统进程管理
三个概念:
程序:一组指令的静态结合
进程:程序的动态模式,一个运行中的程序
线程:轻量级的进程
三者关系:
程序每次启动,都会新建一个进程
每个进程相互独立,拥有自己独立的代码和数据空间,具有并发性和交往性
(相同程序启动的两个进程因为独立的代码和数据空间,所以他们是不一样的)
每个进程运行中,会启动很多线程,但至少有一个主线程,是资源分配的基本单位
(每个线程对应一个进程,共享该进程的代码和数据)
每个线程不能单独执行,但是每个线程都有程序的入口和执行序列以及程序出口。多个进程组成进程才能被执行。
进程的属性:
PID(进程ID)、PPID(父进程ID)、UID(所属用户ID)、GID(所属用户组)、状态(R、S、Z)、优先级(NI)、终端名、占用资源(CPU、MEM)
进程管理工具:
如:ps、top、pgrep、ptree、netstat、kill等命令
ps命令:report a snapshot of the current processes.(静态)
[root@xiaogan122 ~]# rpm -qf `which ps`
procps-ng-3.3.10-3.el7.x86_64
Usage:ps [options]
OPTIONS:
-a 显示所有终端中运行的进程
-u 显示所有用户的进程 -u <UID> 查看指定用户进程
-x 显示没有终端的进程
-p <PID> 显示指定PID的进程
-l 长格式
-e 显示所有进程(包括没有终端的进程)
Examples:
ps -aux #查看全部进程 (#是用BSD的格式来显示进程)
ps -p 1234 #显示进程ID为1234的进程信息
ps -u #查看指定用户进程信息(不写用户则为当前登录用户)
ps -le #查看全部进程 与-aux格式不通 (#是用标准的格式显示进程)
top命令:display Linux processes(动态更新)
[root@xiaogan122 ~]# rpm -qf `which top`
procps-ng-3.3.10-3.el7.x86_64
Usage:top [option]
top -hv | -bcHiOSs -d secs -n max -u|U user -p pid(s) -o field -w [cols]
OPTIONS:
-h -v 查看帮助信息
-b -c -d -H -i -n -o -O -p -s -S -u | -U -w
Examples:
top -p pid #显示进程id等于pid的进程信息
top #显示全部进程信息
在top命令下一些快捷键:(进入top动态显示界面,按h或?键可进入下面的帮助界面)
pgrep命令:
pgrep, pkill - look up or signal processes
based on name and other attributes
[root@xiaogan122 ~]# rpm -qf `which pgrep`
procps-ng-3.3.10-3.el7.x86_64
Usage:pgrep [Server Name]
pgrep/pkill [options] <pattern>
OPTIONS:[pgrep --help] #to see help
Examples:
pgrep sshd
pstree命令:display a tree of processes
[root@xiaogan122 ~]# rpm -qf `which pstree`
psmisc-22.20-9.el7.x86_64
Usage:pstree [option]
OPTIONS:[pstree --help] #to see help
Examples:
pstree #以树状图显示进程,只显示进程的名字,且相同进程合并显示。
pstree -p #以树状图显示进程,还显示进程PID。
netstat命令:
rpm包:
[root@xiaogan122 ~]# rpm -qf `which netstat`
net-tools-2.0-0.17.20131004git.el7.x86_64
Usage:netstat [options]
OPTIONS:[netstat --help] #to see help
-a # display all sockets (default: connected)
-n # don’t resolve names ( host \ port \ user )
-l # display listening server sockets
-p # display PID/Program name for sockets
-t # to see TCP
-u # to see UDP
Examples:
netstat -anlpt #查看全部TCP连接
netstat -anlpu #查看全部UDP连接
nestat -anlpt | grep httpd #grep结合使用,查看某服务监听端口
kill命令:control process
[root@xiaogan122 ~]# rpm -qf `which kill`
util-linux-2.23.2-26.el7.x86_64
Usage:kill [option] ...
kill [-s signal|-p] [-q sigval] [-a] [--] pid...
kill -l [signal]
OPTIONS:
-l #列出所有信号
-s signal #指定发送的信号代码
-p pid #指定要操作的pid
Examples:
kill -9 5873 #杀死进程pid=5873
kill -s 9 5873 #同上
killall httpd #杀死httpd全部进程
虚拟文件系统 /proc /sys
Linux系统中,一切皆文件,设备可以通过读写来操作;
/proc 内存中有关系统进程的信息
/sys 有关系统内核以及驱动的信息
cat /proc/cpuinfo #查看当前cpu信息
#开启内核转发功能,如下:
echo "1" > /proc/sys/net/ipv4/ip_forward
LINUX后台进程与前台进程
Linux后台进程:也叫守护进程 ( Daemon ),是运行在后台的一种特殊进程。
守护的意思就是不受终端控制。Linux中大多数服务器都是用守护进程来实现的。
Linux前台进程:用户使用的有终端控制的进程。
进程前后台运行相关指令:fg、bg、jobs、&、ctrl+z
& :用在一个命令最后,可以把这个命令放在后台执行。
ctrl + z : 将一个正在前台执行的命令放到后台,并且暂停。
jobs : 查看当前后台运行进程的数量
fg : 将后台运行的命令调至前台继续运行。Usage: fg %jobnumber
bg : 将一个后台暂停的命令,变成继续执行。Usage: bg %jobnumber
进程优先级管理:
优先级: 内存占用CPU的QOS机制等
优先级取值范围: ( -20,19 )
越小优先级越高,默认优先级是0
renice/nice命令:指定程序的运行优先级
[使用top命令可以查看进程的优先级]
作用:指定程序的运行优先级
Usage:nice -n command #以优先级级别n运行command命令
renice n -pid PID #更改pid为PID的进程优先级为n
Examples:
nice -n 5 vim a.txt #以第5优先级别,运行vim a.txt命令
ps -aux | grep vim #查看vim进程
top -p PID #根据上一条命令查看的pid,查看pid进程信息
renice n -pid PID #更改pid为PID的进程优先级为n
文件控制台的窗口管理:
screen命令: ( screen manager with VT100/ANSI terminal emulation )
screen作用: screen中有会话的概念,用户可以在一个screen绘画中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的telnet/ssh连接窗口那样.
执行screen命令,将创建一个执行shell的全屏窗口.可以在其中执行任何shell程序.输入exit即退出该窗口.
在远程连接某些远程主机进行大型维护项目时,可使用screen进行维护,这样,在意外断开远程连接时,不会因为意外断开而终端正在进行的工作!
Usage:
screen [-opts] [cmd [args]]
or: screen -r [host.tty]
Options:screen --help #查看帮助信息
-A 将所有的视窗都调整为目前终端机的大小。
-d <作业名称> 将指定的screen作业离线。
-h <行数> 指定视窗的缓冲区行数。
-m 即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-r <作业名称> 恢复离线的screen作业。
-R 先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-s 指定建立新视窗时,所要执行的shell。
-S <作业名称> 指定screen作业的名称。
-v 显示版本信息。
-x 恢复之前离线的screen作业。
-X #Execute <cmd> as a screen command in the specified session.
-ls或--list 显示目前所有的screen作业。
-wipe 检查目前所有的screen作业,并删除已经无法使用的screen作业。
实例:
screen -S yourname -> 新建一个叫yourname的session
screen -ls -> 列出当前所有的session
screen -r yourname -> 回到yourname这个session
screen -d yourname -> 远程detach某个session
screen -d -r yourname -> 结束当前session并回到yourname这个session
screen -S sandy -X screen ping www.baidu.com
这个命令在一个叫做sandy的screen会话中创建一个新窗口,并在其中运行ping命令。
在每个screen session 下,所有命令都以 ctrl+a(C-a) 开始。
C-a ? -> 显示所有键绑定信息
C-a c -> 创建一个新的运行shell的窗口并切换到该窗口
C-a n -> Next,切换到下一个 window
C-a p -> Previous,切换到前一个 window
C-a 0..9 -> 切换到第 0..9 个 window
Ctrl+a [Space] -> 由视窗0循序切换到视窗9
C-a C-a -> 在两个最近使用的 window 间切换
C-a x -> 锁住当前的 window,需用用户密码解锁
C-a d -> detach,暂时离开当前session,将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里,每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。
C-a z -> 把当前session放到后台执行,用 shell 的 fg 命令则可回去。
C-a w -> 显示所有窗口列表
C-a t -> Time,显示当前时间,和系统的 load
C-a k -> kill window,强行关闭当前的 window
C-a [ -> 进入 copy mode,在 copy mode 下可以回滚、搜索、复制就像用使用 vim 一样
C-b Backward,PageUp
C-f Forward,PageDown
H(大写) High,将光标移至左上角
L Low,将光标移至左下角
0 移到行首
$ 行末
w forward one word,以字为单位往前移
b backward one word,以字为单位往后移
Space 第一次按为标记区起点,第二次按为终点
Esc 结束 copy mode
C-a ] -> Paste,把刚刚在 copy mode 选定的内容贴上
使用screen:
需要安装screen软件包
yum -y install screen
实例:
#######################################
1-11-重定向和文件查找
重定向的含义:
在实际的Linux维护中,改变输入输出内容的方向(不是用默认的标准输入输出设备,即重定向).
重定向命令符号: > ( 覆盖输出 ) >> ( 追加输出 ) < ( 输入 )
文件描述符:0 1 2
文件描述符是一个简单的整数.用以表示每一个被进程所打开的文件
根据被打开的文件顺序,第一个被打开的文件是0,第二个是1,以此类推.
查看当前Linux的默认文件描述符 ---> ulimit -n
用户通过操作系统处理信息的过程中,使用的交互设备文件如下:
在Linux系统中,在一个程序运行时,会打开很多文件,
其中默认打开前三个文件,
以此为标准输入文件、标准输出文件、标准错误文件
标准输入文件 STDIN 文件描述符为0 默认为键盘
标准输出文件 STDOUT 文件描述符为1 默认为显示器
标准错误文件 STDERR 文件描述符为2 默认为显示器
STDIN 标准输入 默认的设备是键盘 文件编号为:0
命令将从标准输入文件中 读取 在执行过程中的 需要的 输入数据.
数据来源于文件
STDOUT 标准输出 默认的设备是 显示器 文件编号为:1
命令执行后的输出结果,发送到标准输出文件.
结果输出到文件
STDERR 标准错误 默认的设备是显示器 文件编号为:2
命令将执行期间的各种错误信息发送到标准错误文件.
错误信息发送到文件
标准输入,标准输出和标准错误默认使用键盘和显示器作为关联设备
与操作系统进行交互完成最基本的输入,输出操作.
实例:
输出重定向: > (覆盖重定向) >> ( 追加重定向 )
echo "ni hao! " > a.txt
echo "hello world! " >> a.txt
输入重定向: < ( 指定重定向输入文件 )
passwd lisi --stdin <password.txt
标准错误重定向:
ls memory 2>err.log
ls memroy 2>/dev/null #/dev/null
标准错误与标准输出同时定向到一个文件:
&> 混合输出 ( 不分正确的还是错误的 )
2>&1 将标准错误输出到标准输出( 将标准错误输出到标准输出文件 )
管道的作用:
前面的输出作为后面的输入(可以将两条命令连接起来)
常用文件查找命令:
tee \ which \ whereis \ locate \ find \ grep
tee命令:
作用:read from standard input and write to standard output and files
Usage:tee [OPTION]... [FILE]...
options:
-a --append #对给出的文件进行追加操作,而不是覆盖
-i #忽略中断信号
实例:
tee a.txt #编辑a.txt文件,若没有则新建(已覆盖方式)
tee -a a.txt #对a.txt追加内容,并将追得的内容显示到屏幕上
which命令: 查找二进制可执行文件的绝对路径
whereis命令:查找本地二进制可执行文件、源码及帮助的路径
locate命令: #结合本地数据库,查找文件
注:在使用本地数据库查找新建文件时,是查找不到的,这是需要使用命令:
updatedb #更新数据库
grep命令:#过滤信息
-v 反转
-i 忽略大小写
^# 以#开头的行
#$ 以#结尾的行
^$ 空行
#######################################
1-12-find命令的使用
find命令: #在目录结构中,搜索文件,并执行特定的操作
find命令提供了相当多的查找条件,功能很强大
Usage:find pathname -options[-print]
pathname要搜索的路径
Options:
-print 输出(有时必须有,有时可有可无,有时必须无)
-name #根据文件名查找
-perm #根据文件权限查找
-prune #忽略某文件或目录
-depth #在指定目录中查找后,进入其子目录查找,有-depth时,-prune选项失效
-user #根据文件属主查找
-group #根据文件属组查找
-nouser -nogroup #查找没有属主或属组的文件( 可能是文件的属组或属组被删除了 )
-mtiome -n/+n #根据文件修改时间查找,还可根据atime \ ctime 查找
#-n n天内的文件 +n n天前的文件(不是未来事件哦)
-type [b,d,c,p,l,f...] #根据文件类型查找
-size #根据文件长度查找
-fstype #在某个文件系统中查找
-mount #不跨越挂载点查找
-follow #若查找到的是链接文件,则会跟随到其源文件
实例:
find / -name a.txt #在根目录下,查找文件名为a.txt的文件
find命令中选项-path和-prune的使用
1. 在当前目录下查找所有txt后缀文件
find ./ -name "*.txt"
2.在当前目录下的dir0目录及子目录下查找txt后缀文件
find ./ -path "./dir0*" -name "*.txt"
3.在当前目录下的dir0目录下的子目录dir00及其子目录下查找txt后缀文件
find ./ -path "*dir00*" -name "*.txt"
4.在除dir0及子目录以外的目录下查找txt后缀文件
find ./ -path "./dir0*" -a -prune -o -name "*.txt" -print
说明:-a 应该是and的缩写,意思是逻辑运算符‘与’(&&); -o应该是or的缩写,意思是逻辑运算符‘或’(||), -not 表示非.
命令行的意思是:如果目录dir0存在(即-a左边为真),则求-prune的值,-prune 返回真,‘与’逻辑表达式为真(即-path './dir0*' -a -prune 为真),find命令将在除这个目录以外的目录下查找txt后缀文件并打印出来;如果目录dir0不存在(即-a左边为假),则不求值-prune ,‘与’逻辑表达式为假,则在当前目录下查找所有txt后缀文件。
5.在dir0、dir1及子目录下查找txt后缀文件
find ./ \( -path "./dir0*" -o -path "./dir1*" \) -a -name "*.txt" -print
6.在除dir0、dir1及子目录以外的目录下查找txt后缀文件
find ./ \( -path "./dir0*" -o -path "./dir1*" \) -a -prune -o -name "*.txt" -print
注意:圆括号()表示表达式的结合。即指示 shell 不对后面的字符作特殊解释,而留给 find 命令去解释其意义。由于命令行不能直接使用圆括号,所以需要用反斜杠'\'进行转意(即'\'转意字符使命令行认识圆括号)。同时注意'\(','\)'两边都需空格。
+1. 在所有以名为dir_general的目录下查找txt后缀文件
find ./ -path "*/dir_general/*" -name "*.txt" -print