linux基础-文件文本管理

文件管理

touch:无中生有,万象更新
#当一个文件不存在时,touch可以创建一个空文件
#当一个文件存在时,touch这个文件可以更新文件的时间
[root@zyq ~]# cd /opt/
[root@zyq opt]# touch zzz
[root@zyq opt]# ll
total 0
-rw-r--r--. 1 root root 0 Jun 28 11:23 zzz
[root@zyq opt]# touch zzz
[root@zyq opt]# ll
total 0
-rw-r--r--. 1 root root 0 Jun 28 11:24 zzz
[root@zyq opt]#
stat:查看文件的详细信息,包括文件名、时间戳
[root@zyq opt]# ls
zzz
[root@zyq opt]# stat zzz 
  File: zzz
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d	Inode: 50701281    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:usr_t:s0
Access: 2023-06-28 11:24:28.259746622 +0800
Modify: 2023-06-28 11:24:28.259746622 +0800
Change: 2023-06-28 11:24:28.259746622 +0800
 Birth: 2023-06-28 11:23:54.816445269 +0800
[root@zyq opt]#
rm:remove删除文件
例:
​	-r 删除目录时必须带上-r选项
[root@zyq ~]# rm -r /zzz/
rm: descend into directory '/zzz/'? yy^H
rm: descend into directory '/zzz/www'? y
rm: descend into directory '/zzz/www/hhh'? y
rm: remove directory '/zzz/www/hhh/1234'? y
rm: remove directory '/zzz/www/hhh'? y
rm: remove directory '/zzz/www'? y
rm: remove directory '/zzz/'? y
[root@zyq ~]# y-f 删除文件或目录时,不再询问是否删除
#	注意事项:删除文件时一定不要带-r选项,以免误删
[root@zyq opt]# ls
zzz
[root@zyq opt]# rm -f zzz 
[root@zyq opt]# ls
[root@zyq opt]# 
cp:copy复制
例:
​	 -a  打包复制,常用于备份
​    -r  递归复制,复制目录时必须使用此选项
[root@zyq ~]# ls
1  2  3  4  5  6  7  8  9  anaconda-ks.cfg
[root@zyq ~]# cp -r {1..3} /opt/
[root@zyq ~]# ls /opt/
1  2  3
[root@zyq ~]#-p  复制时保留原权限
#   注意事项:一对一时,源文件和目标文件类型必须一致,对一时,最后一个参数必须是目录
mv:move移动
例:
​	剪切,把一个文件剪切到另一个目录中
[root@zyq ~]# ls
1  2  anaconda-ks.cfg
[root@zyq ~]# ls 1/
test
[root@zyq ~]# mv 1/test 2/
[root@zyq ~]# ls 2/
test
[root@zyq ~]# 

​	重命名,在同一个目录中将文件名字改掉
[root@zyq ~]# ls
1  2  anaconda-ks.cfg
[root@zyq ~]# mv 1  zzz
[root@zyq ~]# ls
2  anaconda-ks.cfg  zzz
[root@zyq ~]#

压缩、解压缩命令

压缩格式

gz、bz2、xz、zip、Z

gzip
gzip        #压缩后的文件以.gz结尾  
[root@zyq ~]# ls
2  5  6  7  8  9  anaconda-ks.cfg  zzz
[root@zyq ~]# gzip 5
[root@zyq ~]# ls
2  5.gz  6  7  8  9  anaconda-ks.cfg  zzz
[root@zyq ~]#-d      #解压缩,解压完成后会删除原文件
[root@zyq ~]# ls
2  5.gz  6  7  8  9  anaconda-ks.cfg  zzz
[root@zyq ~]# gzip -d 5.gz 
[root@zyq ~]# ls
2  5  6  7  8  9  anaconda-ks.cfg  zzz
[root@zyq ~]#-c      #将结果输出至标准输出

gunzip      # 解压
[root@zyq ~]# ls
2  5.gz  6  7  8  9  anaconda-ks.cfg  zzz
[root@zyq ~]# gunzip 5.gz 
[root@zyq ~]# ls
2  5  6  7  8  9  anaconda-ks.cfg  zzz
[root@zyq ~]#

zcat       #不解压的情况下查看文本文件的内容
[root@zyq ~]# echo '123456' > 5
[root@zyq ~]# gzip 5
[root@zyq ~]# ls
2  5.gz  6  7  8  9  anaconda-ks.cfg  zzz
[root@zyq ~]# zcat 5.gz 
123456
[root@zyq ~]#
bzip2
 bzip2       #压缩后的文件以.bz2结尾
             #bzip2是一款比gzip有着更大压缩比的压缩工具,使用格式近似
[root@zyq ~]# which bzip2         #系统中没有此命令
/usr/bin/which: no bzip2 in (/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin)

#挂载后下载
[root@zyq ~]# mount /dev/cdrom /mnt/
mount: /mnt: /dev/sr0 already mounted on /mnt.
[root@zyq ~]# ls /mnt/BaseOS/Packages/bzip2-
bzip2-1.0.8-8.el9.x86_64.rpm       bzip2-libs-1.0.8-8.el9.i686.rpm    bzip2-libs-1.0.8-8.el9.x86_64.rpm 
[root@zyq ~]# rpm -ivh /mnt/BaseOS/Packages/bzip2-1.0.8-8.el9.x86_64.rpm 
warning: /mnt/BaseOS/Packages/bzip2-1.0.8-8.el9.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:bzip2-1.0.8-8.el9                ################################# [100%]
[root@zyq ~]#-d      #解压缩,解压完成后会删除原文件
​        -#      ##用1-9代替,指定压缩比,默认为6-k      #keep,压缩时保留原文件
​		bunzip   #解压

​		bzcat    #不解压的情况下查看文本文件的内容

xz
 xz          #压缩后的文件以.xz结尾
        	 #比bzip2有着更大压缩比的压缩工具,使用格式近似-d         #解压缩,解压完成后会删除原文件

​	unxz        #解压

​	xzcat       #不解压的情况下查看文本文件的内容
zip
zip      #既归档又压缩的工具。zip可以压缩目录
[root@zyq ~]# zip 5.zip 5
  adding: 5 (stored 0%)
[root@zyq ~]# ls
2  5  5.zip  6  7  8  9  anaconda-ks.cfg  zzz
[root@zyq ~]#

         #gz、bz2、xz都只能压缩文件,zip压缩后不会删除原文件-d          #解压缩,解压完成后会删除原文件unzip        #解压

tar
tar:压缩或解压缩文件或目录
	-zcf 以gzip格式压缩文件
	-jcf 以bzip2格式压缩文件
	-Jcf 以xz格式压缩文件
	xf 解压用tar命令进行归档的压缩文件
#	注意事项:Linux中没有后缀的概念,不要被文件名所误导,必要时使用file命令查看文件的格式。
		-c      #创建归档文件
        -f file.tar     #操作的归档文件
        -x      #还原归档
        -v      #显示归档过程
        -p      #归档时保留权限信息。只有管理员才有权限用此选项
        -C      #将展开的归档文件保存至指定目录下
        --delete    #从归档文件中删除文件
        --xattrs    #在归档时保留文件的扩展属性信息
        -tf /path/to/file.tar       #不展开归档,直接查看归档了哪些文件
cat:连接1个或多个文件的内容并显示
	-n:显示行号
	注意事项:
		应避免使用cat命令打开巨大文件,只用其打开小文件,比如配置文件
less:全屏查看文件内容
	空格键:往后翻一屏
	b:往前翻一屏
	/+关键字:查找关键字所在的行
		n:next找下一个
		N:找上一个
	q:退出less命令
head:头,默认显示文件的前10行
	-#:这里的#是一个数字,查看文件的前#行
tail:尾部,默认显示文件的最后10行
	-#:这里的#是一个数字,查看文件的最后#行
	-f:动态查看日志文件的内容

文本处理

cut:用于指定列的内容
	-d:指定字段分隔符
​	-f:指定要显示的字段
​	#注意事项:只能用于比较规则的文本
[root@zyq ~]# ls
anaconda-ks.cfg
[root@zyq ~]# cp /etc/passwd .
[root@zyq ~]# ls
anaconda-ks.cfg  passwd
[root@zyq ~]# head -3 passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@zyq ~]# head -3 passwd | cut -d: -f1
root
bin
daemon
[root@zyq ~]# head -3 passwd | cut -d: -f1-3
root:x:0
bin:x:1
daemon:x:2
[root@zyq ~]# head -3 passwd | cut -d: -f1,3
root:0
bin:1
daemon:2
[root@zyq ~]#
df:用于查看系统的挂载分区使用情况
	-h:用容易识别的单位显示大小

[root@zyq ~]# df -h
Filesystem             Size  Used Avail Use% Mounted on
devtmpfs               4.0M     0  4.0M   0% /dev
tmpfs                  3.9G     0  3.9G   0% /dev/shm
tmpfs                  1.6G  9.1M  1.6G   1% /run
/dev/mapper/rhel-root   17G  1.1G   16G   7% /
/dev/sda1             1014M  184M  831M  19% /boot
tmpfs                  791M     0  791M   0% /run/user/0
[root@zyq ~]# 

awk:用于显示指定的内容
awk    #用于显示指定列的内容,基于列的文本报告工具
​	-F:指定字段分隔符,默认分隔符为空格,在处理文本时会将多个空格视为一个空格去处理
​	语法:awk -F'字段分隔符' '{print $指定的列}' 要处理的文件名
eg:awk -F':' '{print $1,3}' /etc/passwd

[root@zyq ~]# head -3 passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@zyq ~]# head -3 passwd | awk -F: '{print $1,$3}'
root 0
bin 1
daemon 2
[root@zyq ~]# head -3 passwd | awk -F: '{print $1":"$3}'
root:0
bin:1
daemon:2
[root@zyq ~]#

#    awk 默认分隔符为空格,在处理文本时会将多个空格视为一个空格
[root@zyq ~]# df -h
Filesystem             Size  Used Avail Use% Mounted on
devtmpfs               4.0M     0  4.0M   0% /dev
tmpfs                  3.9G     0  3.9G   0% /dev/shm
tmpfs                  1.6G  9.1M  1.6G   1% /run
/dev/mapper/rhel-root   17G  1.1G   16G   7% /
/dev/sda1             1014M  184M  831M  19% /boot
tmpfs                  791M     0  791M   0% /run/user/0
[root@zyq ~]# df -h | awk '{print $2}'
Size
4.0M
3.9G
1.6G
17G
1014M
791M
[root@zyq ~]#
sed:在不进入文件的情况下进行文件内容的查找、修改操作
	语法:sed '查找或修改指令' 要处理的文件名
​		-i:在确保修改指令无误的情况下使用此选项真正去修改文件内容
[root@zyq ~]# sed -i 's/root/123/2' passwd 
[root@zyq ~]# grep root passwd 
root:x:0:0:123:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@zyq ~]# sed -i 's/root/123/' passwd 
[root@zyq ~]# grep root passwd 
123:x:0:0:123:/root:/bin/bash
[root@zyq ~]# grep 123 passwd 
123:x:0:0:123:/root:/bin/bash
operator:x:11:0:operator:/123:/sbin/nologin
[root@zyq ~]#


​	eg:在/root/passwd文件中查找包含root的行
		cp /etc/passwd /root/passwd
		sed -n '/root/p' /root/passwd
#	注意事项:在使用sed进行文本查找时,必须使用-n选项关闭默认的打印功能,然后在匹配到内容后使用p命令进行打印匹配的内容
[root@zyq ~]# ls
anaconda-ks.cfg  passwd
[root@zyq ~]# sed -n '/root/p' passwd 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@zyq ~]#


​	eg:在/root/passwd文件中替换所有的root为123
		sed 's/root/123/g' /root/passwd
[root@zyq ~]# sed 's/root/123/g' passwd 
123:x:0:0:123:/123:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/123:/sbin/nologin
......


#   生成多行文件的方式:
​	第1种方式:
	多次执行 echo '内容' >> 文件名
	
​   第2种方式:使用cat命令的特殊用法
	cat > 文件名 <<EOF
	文件内容
	文件内容
	文件内容
	...
	EOF
[root@zyq ~]# cat > abc <<EOF 
> 1 5 9 
> 3 6 8
> 10 4 7 
> 3 
> 2 3 5 
> 4 12 8
> EOF
[root@zyq ~]# cat abc
1 5 9 
3 6 8
10 4 7 
3 
2 3 5 
4 12 8
[root@zyq ~]#

文本排序

sort
sort    #默认升序,不是按数值大小排列
[root@zyq ~]# cat abc
1 5 9 
3 6 8
10 4 7 
3 
2 3 5 
4 12 8
[root@zyq ~]# sort abc 
10 4 7 
1 5 9 
2 3 5 
3 
3 6 8
4 12 8
[root@zyq ~]#

        -n      #根据数值大小进行排序
[root@zyq ~]# cat abc
1 5 9 
3 6 8
10 4 7 
3 
2 3 5 
4 12 8
[root@zyq ~]# sort -n abc 
1 5 9 
2 3 5 
3 
3 6 8
4 12 8
10 4 7 
[root@zyq ~]#

        -r      #逆序排序
[root@zyq ~]# sort abc 
10 4 7 
1 5 9 
2 3 5 
3 
3 6 8
4 12 8
[root@zyq ~]# sort -nr abc 
10 4 7 
4 12 8
3 6 8
3 
2 3 5 
1 5 9 
[root@zyq ~]#

        -t      #字段分隔符
        -k      #以哪个字段为关键字进行排序
[root@zyq ~]# cat abc
1 5 9 
3 6 8
10 4 7 
3 
2 3 5 
4 12 8
[root@zyq ~]# sort -t' ' -k2 -n abc
3 
2 3 5 
10 4 7 
1 5 9 
3 6 8
4 12 8
[root@zyq ~]# 

        -u      #去重,排序后相同的行只显示一次
[root@zyq ~]# sort  -n abc 
1 5 9
2 3 5
3
3
3 6 8 
4 12 8
10 4 7
[root@zyq ~]# sort  -nu abc 
1 5 9
2 3 5
3 6 8 
4 12 8
10 4 7
[root@zyq ~]#
        -f      #排序时忽略字符大小写	
uniq:报告重复行
uniq    #连续且完全相同方为重复
		-c      #显示文件中行重复的次数
[root@zyq ~]# sort  -n abc 
1 5 9
2 3 5
3
3
3 6 8 
4 12 8
10 4 7
[root@zyq ~]# sort  -n abc | uniq -c
      1 1 5 9
      1 2 3 5
      2 3
      1 3 6 8 
      1 4 12 8
      1 10 4 7
[root@zyq ~]#

        -d      #只显示重复的行
        -u      #只显示未重复的行
[root@zyq ~]# sort  -n abc 
1 5 9
2 3 5
3
3
3 6 8 
4 12 8
10 4 7
[root@zyq ~]# sort  -n abc | uniq -u
1 5 9
2 3 5
3 6 8 
4 12 8
10 4 7
[root@zyq ~]# sort  -n abc | uniq -d
3
[root@zyq ~]#

文本统计

wc:word count,统计文本内容的数量
例:

​	-c:character,统计字符的数量
​	-w:word,统计单词数量
​	-l:line,统计文本行数
[root@zyq ~]# cat abc
1 5 9
3 6 8 
10 4 7
3
2 3 5
4 12 8
3
[root@zyq ~]# wc -c abc 
37 abc
[root@zyq ~]# wc -w abc 
17 abc
[root@zyq ~]# wc -l abc 
7 abc
[root@zyq ~]# cat abc | wc -l
7
[root@zyq ~]# cat abc | wc -w
17
[root@zyq ~]# cat abc | wc -c
37
[root@zyq ~]#
du:disk usage,查询指定文件或目录所占用的磁盘空间
例:

​	-s:summary,概要信息
​	-h:human,用人类容易识别的单位显示大小
[root@zyq ~]# ls
abc  anaconda-ks.cfg  passwd
[root@zyq ~]# du -sh /tmp/
4.0K	/tmp/
[root@zyq ~]# du -sh /etc/
20M	/etc/
[root@zyq ~]#

主机名管理

#主机名管理
hostname:查看主机名
hostnamectl:永久设置主机名
	hostnamectl set-hostname 主机名
    hostname        #查看或临时修改主机名,重开终端有效,重启失效
    hostnamectl     #查看或永久修改主机名,重开终端生效,重启依然有效
  
  
  
#其它
    time        #显示命令的执行时间,例如time ls /etc
[root@zyq ~]# 
[root@zyq ~]# sleep 3
[root@zyq ~]# time sleep 3

real	0m3.015s
user	0m0.000s
sys	0m0.001s
[root@zyq ~]#



    clear       #清屏
    whoami      #显示当前登录用户
    w           #显示当前在线用户并显示其在运行的命令
    who         #查看当前在线用户
[root@zyq ~]# whoami
root
[root@zyq ~]# who
root     pts/0        2023-06-29 09:43 (192.168.227.1)
[root@zyq ~]# w
 15:44:23 up  4:06,  1 user,  load average: 0.00, 0.00, 0.00
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0     09:43    7.00s  0.09s  0.00s w
[root@zyq ~]#




    which       #显示指定命令的绝对路径
[root@zyq ~]# which  cd
/usr/bin/cd
[root@zyq ~]#



    date        #显示或设置日期与时间
        #不带参数的date用于显示当前系统日期与时间
        -s      #以字符串方式设置时间
        #格式化输出时间:+
            %Y      #年
            %m      #月
            %d      #日
            %H      #时
            %M      #分
            %S      #秒
                        
    ldd     #查看指定程序有哪些依赖库文件
        程序组成
            二进制程序
            库文件
            配置文件
            帮助文件

命令提示符更改颜色

vi .bashrc

PS1='\[\e[32;1m\][\u@\h \W]\$:\[\e[0m\] ' 添加此行,颜色参数可调整

bash

在这里插入图片描述

文本查找

grep 、egrep、 fgrep

grep
grep        #根据模式搜索文本,并将符合模式的文本行显示出来。 
            #使用基本正则表达式定义的模式来过滤文本的命令。
        Pattern(模式)     #文本字符和正则表达式的元字符组合而成的匹配条件


        -i  #忽略大小写
[root@zyq ~]# ls
123  abc  anaconda-ks.cfg  passwd  zzz
[root@zyq ~]# grep 'appstream' anaconda-ks.cfg 
[root@zyq ~]# grep -i 'appstream' anaconda-ks.cfg 
repo --name="AppStream" --baseurl=file:#/run/install/sources/mount-0000-cdrom/AppStream
[root@zyq ~]#


        --color     #匹配到的内容高亮显示
        -v          #显示没有被模式匹配到的行
[root@zyq ~]# grep '123' passwd 
123:x:0:0:123:/root:/bin/bash
operator:x:11:0:operator:/123:/sbin/nologin
[root@zyq ~]# grep -v '123' passwd 
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
......


        -o          #只显示被模式匹配到的字符串
        -E          #使用扩展正则表达式。grep -E相当于使用egrep
        -q          #静默模式,不输出任何信息
# 检查grep命令查找本本内容是否正确
#echo  $?    查看命令状态
#1      
#0   
[root@zyq ~]# cat zzz 
hello li
123

#zbcd
[root@zyq ~]# grep -q 'hello' zzz 
[root@zyq ~]# grep npc zzz 
[root@zyq ~]# echo $?
1
[root@zyq ~]# grep -q 'hello' zzz 
[root@zyq ~]# echo $?
0
[root@zyq ~]#


        -A 1        #被模式匹配到的内容以及其后面一行的内容都显示出来,
                    #如果把1改成2就表示被模式匹配到的内容以及其后面2行的内容均显示出来
        -B 1        #被模式匹配到的内容以及其前面一行的内容都显示出来, 
                    #如果把1改成2就表示被模式匹配到的内容以及其前面2行的内容均显示出来
        -C 1        #被模式匹配到的内容以及其前后的行各显示1行,如果把1改成2 
                    #就表示被模式匹配到的内容以及其前后的行各显示2行。
 [root@zyq ~]# cat zzz 
hello li
123

#zbcd
[root@zyq ~]# grep 'hello' zzz 
hello li
[root@zyq ~]# grep -A2 'hello' zzz 
hello li
123

[root@zyq ~]# grep -B1 'hello' zzz 
hello li
[root@zyq ~]# grep -C1 'hello' zzz 
hello li
123
[root@zyq ~]#       
    fgrep       #不支持正则表达式,执行速度快

命令帮助

内部命令
    help COMMAND    #命令
#外部命令
    COMMAND --help
#在线文档
    info COMMAND    
#命令手册  manual
    man COMMAND
#文档
    /usr/share/doc 

命令补全tab

yum -y install bash-completion*

文件查找

在文件系统上查找符合条件的文件
locate
#语法:
            locate KEYWORD
        #非实时,模糊匹配,查找是根据全系统文件数据库进行的,查找的速度快
        #依赖于事先构建的索引。索引的构建是在系统较为空闲时自动进行(周期性任务)
        updatedb        #手动生成文件数据库
        #索引构建过程需要遍历整个根文件系统,极消耗资源
find
 find        #实时查找,精确性强,遍历指定目录中所有文件完成查找, 
                #查找速度慢,支持众多查找标准。
        #语法:find [OPTION...] 查找路径 查找标准 查找到以后的处理动作
        查找路径        #默认为当前目录
        查找标准        #默认为指定路径下的所有文件
            -name 'filename'    #对文件名作精确匹配.支持glob通配符机制
[root@zyq ~]# ls
123  abc  anaconda-ks.cfg  passwd  zzz
[root@zyq ~]# find / -name 123
/root/123
[root@zyq ~]# find  -name 123
./123
[root@zyq ~]#


            -iname 'filename'   #文件名匹配时不区分大小写
            -regex pattern      #基于正则表达式进行文件名匹配.以pattern 
                                #匹配整个文件路径字符串,而不仅仅是文件名称
            -user username          #根本属主来查找
            -group groupname        #根据属组来查找
            -uid        #根据UID进行查找,当用户被删除以后文件的属主会变为此用户的UID
            -gid        #根据GID进行查找,当用户被删除以后文件的属组会变为此用户的GID
            -nouser     #查找没有属主的文件.用户被删除的情况下产生的文件,只有uid没有属主
            -nogroup    #查找没有属组的文件.组被删除的情况下产生的文件,只有gid没有属组
            -type       #根据文件类型来查找(f,d,c,b,l,p,s)
            -size       #根据文件大小进行查找。如1k、1M,+10k、+10M,-1k、-1M, 
                        #+表示大于,-表示小于
                [+|-]
                #K、#M、#G
                #Unit表示(从#-1到#之间的范围大小)
                -#Unit表示(从0到#-1的范围大小)
                +#Unit表示(大于#的所有)
            -mtime      #修改时间
            -ctime      #改变时间
            -atime      #访问时间
                +5      #5天前
                -5      #5天以内
            -mmin       #多少分钟修改过
            -cmin       #多少分钟改变过
            -amin       #多少分钟访问过
                +5      #5分钟前
                -5      #5分钟以内
            -perm mode      #根据权限精确查找
            -perm -mode     #文件权限能完全包含此mode时才符合条件
            -perm /mode     #9位权限中有任何一位权限匹配都视为符合查找条件
        
        #组合条件:
            -a
            -o
            -not
            !
            例:
                !A -a !B = !(A -o B)
                !A -o !B = !(A -a B)
                    
        #处理动作:默认为显示到屏幕上
            -print      #显示
            -ls         #类似ls -l的形式显示每一个文件的详细信息
            -delete     #删除查找到的文件
            -fls /path/to/somefile      #查找到的所有文件的长格式信息保存至指定文件中
            -ok COMMAND {} \;   #对查找到的每个文件执行COMMAND,每次操作都需要用户确认
            -exec COMMAND {} \; #对查找到的每个文件执行COMMAND,操作不需要确认
            
            #注意:find传递查找到的文件至后面指定的命令时,查找到所有 
            #符合条件的文件一次性传递给后面的命令,而有些命令不能接受过多参数, 
            #此时命令执行可能会失败。而xargs可规避此问题。
            xargs   #通过管道将查找到的内容给xargs处理,xargs后面直接跟命令即可
                
[root@localhost ~]# ls
initial-setup-ks.cfg  zzz
[root@localhost ~]# ll  zzz/
总用量 4
-rw-------. 1 root root 1378 928 19:38 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 104 16:20 root
[root@localhost ~]#

#-name (-iname)
[root@localhost ~]# find   zzz/  -name root
zzz/root
[root@localhost ~]# touch zzz/zhangsan
[root@localhost ~]# ls zzz/
anaconda-ks.cfg  root  zhangsan
[root@localhost ~]# touch  zzz/Zhangsan
[root@localhost ~]# ls zzz/
anaconda-ks.cfg  root  zhangsan  Zhangsan
[root@localhost ~]# find zzz/  -iname  zhangsan
zzz/zhangsan
zzz/Zhangsan
[root@localhost ~]# 

#-user、-group
[root@localhost ~]# find   zzz/  -user root
zzz/
zzz/root
zzz/anaconda-ks.cfg
zzz/zhangsan
zzz/Zhangsan
[root@localhost ~]# find  zzz/  -group  root
zzz/
zzz/root
zzz/anaconda-ks.cfg
zzz/zhangsan
zzz/Zhangsan
[root@localhost ~]# 

#-type
[root@localhost ~]# find  zzz/  -type  f
zzz/anaconda-ks.cfg
zzz/zhangsan
zzz/Zhangsan
[root@localhost ~]# find  zzz/  -type  d
zzz/
zzz/root
[root@localhost ~]#

#-size
[root@localhost ~]# find  zzz/  -size  -1k
zzz/zhangsan
zzz/Zhangsan
[root@localhost ~]# find  zzz/  -size  +1k
zzz/anaconda-ks.cfg
[root@localhost ~]#

重定向与管道符

#系统设定:
    默认输入设备      #标准输入,STDIN,0  (键盘)
    默认输出设备      #标准输出,STDOUT,1 (显示器)
    标准错误输出      #STDERR,2 (显示器)
    
#I/O重定向:
    >:覆盖输出
    >>:追加输出
[root@zyq ~]# cat zzz 
zzz
[root@zyq ~]# echo '111' > zzz 
[root@zyq ~]# cat zzz 
111
[root@zyq ~]# echo '111' >> zzz 
[root@zyq ~]# cat zzz 
111
111
[root@zyq ~]# echo '111' >> zzz 
[root@zyq ~]# cat zzz 
111
111
111
[root@zyq ~]#



2>      #重定向错误输出
[root@zyq ~]# ls zzz haha > zzz 2> 123
[root@zyq ~]# ls
123  anaconda-ks.cfg  passwd  zzz
[root@zyq ~]# cat zzz
zzz
[root@zyq ~]# cat 123 
ls: cannot access 'haha': No such file or directory
[root@zyq ~]#

2>>     #追加重定向错误输出
&>      #覆盖重定向标准输出或错误输出至同一个文件
[root@zyq ~]# ls
123  anaconda-ks.cfg  passwd  zzz
[root@zyq ~]# ls zzz haha &> abc
[root@zyq ~]# cat abc 
ls: cannot access 'haha': No such file or directory
zzz
[root@zyq ~]#


&>>     #追加重定向标准输出或错误输出至同一个文件
[root@zyq ~]# ls haha &>> zzz 
[root@zyq ~]# cat zzz 
111
111
111
ls: cannot access 'haha': No such file or directory
[root@zyq ~]# ls haha &> zzz 
[root@zyq ~]# cat zzz 
ls: cannot access 'haha': No such file or directory
[root@zyq ~]#

<       #输入重定向
[root@zyq ~]# cat abc 
ls: cannot access 'haha': No such file or directory
zzz
[root@zyq ~]# cat zzz 
ls: cannot access 'haha': No such file or directory
[root@zyq ~]# cat > zzz < abc 
[root@zyq ~]# cat zzz 
ls: cannot access 'haha': No such file or directory
zzz
[root@zyq ~]#
<<      #Here Document


|   #管道      前一个命令的输出,作为后一个命令的输入。最后一个命令会在当前shell进程 的子shell进程中执行
命令1 | 命令2 | 命令3 | ...
[root@zyq ~]# echo "hello world"
hello world
[root@zyq ~]# echo "hello world" | tee zzz 
hello world
[root@zyq ~]# cat zzz 
hello world
[root@zyq ~]#

  • 32
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值