美文网首页
三.文件管理

三.文件管理

作者: hitlipeng | 来源:发表于2018-03-26 10:42 被阅读0次

    1.基本文件管理:

    普通文件:

    增:touch    

    使用格式:#touch   文件名1  文件名2  ... 

    创建单个文件: 

    #touch   file1

    创建多个文件:  

    #touch  file2  file3  file4同时创建三个文件  

    注意:文件名是可以带空格的,但是尽量避免这样的操作   

    删:rm   

    使用格式:#rm  文件名1   文件名2  ...

    删除单个文件:

    #rm  file1  

    remove regular empty file `file1'?  Y代表删除  N不删除

    删除多个文件:

    #rm  file2  file3  file4  

    注意: 本身rm并不能交换询问,是它的一个选项-i导致会询问

    -i: prompt before every removal

    扩展:命令的别名,如果一个命令有别名,会先去引用别名 

    查看别名:#alias   

    alias rm='rm -i'再去使用rm的时候,相当于使用了rm -i   

    设定别名:#alias   别名="命令+[选项]+[参数]"

       #alias   tom="rm  -i"  

    #tom    file1也会将tom当作rm -i去使用 

    取消别名:#unalias   别名  

       #unalias   tom    

    #alias发现tom的别名就没有了 

    强制删除:可以不再交互式询问

    -f: force强制删除   

    #rm   -f    file1     

    改:

    编辑:#vim   文件名    

    vim的使用模式:

    命令模式:直接使用命令打开的模式

    常见的命令:

    yy:复制, 4yy方式,复制4行    

    dd:剪切, 4dd方式,剪切4行

    p:粘贴,会将内容粘贴到光标所在行的下一行 

    u:撤销上一步操作

    插入模式: 在命令模式下,按i  a  o  I  A  O中任意一个字符所进入的模式,就是编辑模式,可以任意书写内容

    注意:在插入模式下,不能直接进入到末行模式,必须先回到命令模式,按Esc回到命令模式  

    末行模式:在命令模式下,按冒号键进入的模式

    注意:在末行模式,也不能直接进入到插入模式,也需回到命令模式,也是按Esc键  

    末行功能:  

    q:退出  

    w:保持  

    wq:保持并退出  

    q!:强制退出,不保存  

    w!:强制保存    

    wq!:强制保存,并退出

    例:#vim     file1.txt    

    注意:如果文件存在,则直接进行编辑;如果不存在,则先创建,再编辑

    复制:#cp  原文件   目标文件   

    例: 

    #cp   file1.txt   file2.txt   

    #cat  file2.txt发现内容和file1.txt一样   

    #ls  -i   

    270953 file1.txt  261191 file2.txt两个文件的inode不一样

    移动、剪切:#mv   原文件   目标文件   

    #mv   file1.txt   file3.txt   

    #cat  file3.txt   

    #ls  -i   

    270953 file3.txt   file3的inode号,跟原文件file1一样

    在某种层次上,可以把移除,理解成是给文件改名 

    查:cat   tac  head    tail   more   less   

    正向查看: 会将文件内容一次性读进内存进行查看 

    #cat文件名   

    #cat   /etc/passwd  

    -n:显示行数  

    #cat -n   /etc/passwd   

    反向查看:

    #tac文件名   

    #tac   /etc/passwd  

    查看头部:

    #head文件名  

    #head   /etc/passwd默认显示文件的前十行  

    #head   -3    /etc/passwd显示文件的前三行  

    查看尾部: 

    #tail文件名  

    #tail   /etc/passwd显示尾十行   

    #tail  -3  /etc/passwd显示尾三行  

    翻页查看:向下翻页

    #more文件名 

    #more   /etc/passwd 

    按回车键,向下翻一行;按空格,向下翻一页;按q退出查看

    翻页查看:上下左右翻页

    #less文件名  

    #less   /etc/passwd   

    按回车键,向下翻一行;按空格,向下翻一页;按q退出查看;还可以使用上下左右箭头查看,可以回看 

    目录:

    增:mkdir   

    创建一个目录:#mkdir   目录名   

    #mkdir  aa   

    创建多个目录:#mkdir  目录名1   目录名2  ...

    #mkdir  bb   cc   dd  

    同时创建多级子目录: 

    #mkdir  -p    ff/fff/ffff/fffff   

    删:rmdir  

    删除一个目录:#rmdir    目录名   

    #rmdir   aa    

    删除多个目录: 

    #rmdir  bb   cc   dd   

    #rmdir   ff   

    failed to remove `ff': Directory not empty

    默认rmdir只能删除空的目录 

    递归删除:#rm  -r    目录名    

    #rm  -r   ff发现可以删除   

    改:cp  mv   

    复制:#cp  -r   原目录   目标目录

    #mkdir   -p  a/b/c/d  

    #cp   a    h   

    #ls   

    #ls   -h    

    剪切:#mv   原目录  目标目录 

    #mv   a   l    

    #ls发现没有了a目录,生成了l目录  

    #ls   -R   l   

    查:ls     

    2.扩展查看:file    stat    type     

    file:查看文件内容的类型

    #file     /etc/passwd  

    ASCII text纯文本的文件,可以直接使用cat等命令查看  

    #file    /bin/ls    

    64-bit LSB executable使用lsb协议加密的文件,不能使用cat等查看 

    #file   /var/lib/mysql/ibdata1    

    /var/lib/mysql/ibdata1: data数据库类型文件,也不能使用cat等查看

    stat:查看文件的基本属性详细信息

    #stat    /etc/passwd   

    Access:访问时间,查看了文件的内容,该时间会变

    Modify:修改时间,修改了文件的内容,该时间会变

    Change:改变时间,修改文件的基本属性,该时间会变

    type:查看命令的类型

    #type   cd  

    cd is a shell builtin系统内建命令,伴随内核而来

    #type   chmod   

    chmod is /bin/chmod外部命令     

    #type   ls    

    ls is aliased to `ls --color=auto'如过有别名,先显示别名

    which:查看命令的绝对路径

    命令:就是一个文件,文件存放是功能代码

    #which    chmod    

    /bin/chmod     

    3.文件的搜索:

    locate:是本地数据库中搜索,速度比较快,但不是实时的 

    使用格式:#locate     字符串(string)

    注意:locate是对文件名做模糊匹配,只要将来文件中含有该字符串,就会被显示

    例1: 

    #locate   ifcfg  

    例2: 

    #touch    /home/loring/zhangsanfeng.txt 

    #locate  zhangsanfeng    

    发现新创建的文件,没有搜索到   

    这是因为,数据库默认是每天更新一次,新建立的文件还没有更新到数据

    #updatedb手动更新数据库的命令 

    #locate     zhangsanfeng     

    /home/loring/zhangsanfeng.txt

    例3:  

    #touch    /tmp/zhangwuji.txt

    #updatedb     

    #locate    zhangwuji     

    发现更新了数据库,依然搜索不到  

    #vim   /etc/updatedb.conf    

    PRUNEPATHS = "/afs /media /net /sfs  /tmp"

    path:路径  

    在这后面有/tmp的出现,那么将来在/tmp中的文件,就不会更新到数据库

    如果想让/tmp目录中的文件,更新到数据,将其从paths后删除即可

    #updatedb   

    #locate   zhangwuji    

    /tmp/zhangwuji.txt

    find:是遍历整个文件系统(目录),速度较慢,但它是实时的 

    使用格式:#find   目录   选项  选项的参数

    find是按照文件的基本属性进行搜索的

    准备过程: 

    #useradd    loring

    #cd   /home/loring   

    #touch   a.txt   b.txt   c.txt      

    #mkdir  abc    

    #chown   loring    a.txt   

    #chown   .loring    b.txt 

    #chmod   631  c.txt  

    #cp   /var/log/messages   /home/loring     

    按照文件的类型搜索:-type  

    #find   /home/loring   -type   f   

    代表从/home/loring目录中进程搜索   

    -type:代表按照文件的类型进程搜索  

    常见的类型:f普通文件   d目录  l链接文件  b块设备  c字符设备

    按照文件的权限搜索:-perm       permission  权限   

    #find  /home/loring   -perm   631   

    搜索权限为631的文件  

    /home/loring/c.txt

    按照文件的所有者搜索:-user   

    #find  /home/loring   -user   loring    

    搜索所有者为loring的文件   

    /home/loring/a.txt

    按照文件的所属组搜索:-group   

    #find   /home/loring  -group   loring   

    搜索组为loring的文件  

    /home/loring/b.txt

    按照文件大小搜索:-size    

    #find   /home/loring   -size   4k搜索大小等于4k的文件

    显示内容:/home/loring/abc

    #find   /home/loring   -size   +4k搜索大于4k的文件

    显示内容:/home/loring/messages

    #find   /home/loring   -size   -4k搜索小于4k的文件  

    显示内容:/home/loring/c.txt

      /home/loring/b.txt

      /home/loring/a.txt

    #find    /home/loring   -size   +10k    -size  -50k   

    搜索大于10k,但是小于50k的文件 

    #find   /home/loring  -size    -1k    

    #find   /home/loring  -size    -1M    

    #find   /home/loring  -size    -1G   

    注意:单位前别直接写-1,-1等于0了  

    按照文件名搜索:-name   

    #find   /home/loring    -name   c.txt  

    显示/home/loring/c.txt    

    #find   /home/loring    -name    c.tx发现没有,精确搜索 

    文件名通配: 

    通配:用一些符号,来代表一类字符

    通配符: 

    *代表任意多个字符  

    ?代表任意单个字符  

    []代表要从括号中给定的值,任选一个

    按照时间进行搜索:-mtime    -ctime   -atime   -mmin  -cmin   -amin   

    -mtime:按照Modify时间进行搜索,单位是天 

    -atime:按照access时间进行搜索,单位是天 

    -ctime:按照change时间进行搜索,单位是天  

    -mmin:按照modify时间进行搜索,单位是分钟

    #find    /home/loring    -mtime     3  

    代表搜索修改时间是在3天前--4天前,一天时间间隔内

    #find   /home/loring     -mtime     +3  

    代表修改时间是在4天以前的文件

    #find   /home/loring     -mtime     -3  

    代表修改时间是在3天以内的文件 

    注意:find搜索文件,多个条件可以同时指定,按要求去做就行

    #find   /home/loring  -user  loring  -size  +100k  -mtime  -10     

    4.文件的压缩和解压缩、打包:

    压缩和解压缩:

    压缩:按照一定算法,将文件的内容重新排列;也可以理解成是一种加密

    解压:按照压缩的相同算法,还原以前的排列

    压缩目的:1.节约磁盘空间   2.节约网络带宽(文件在互联网传输,要压缩)  3.可以保证数据的安全  

    准备工作: 

    #mkdir   /loring  

    #cp   /var/log/messages   /loring/messages  

    多复制几个文件 

    或者: 

    #while true;do cat /etc/passwd  >> /loring/passwd;done   

    执行一会后,要按ctrl+c结束 

    4.1 zip:

    使用格式:#zip   压缩文件名    文件名1  文件名2 ...

    注意:zip不仅有压缩功能,也有打包功能

    压缩: 

    例: 

    #zip   loring.zip   passwd  passwd1   

    注意:1. loring.zip的压缩文件名,是自己定义的,必须以.zip结尾,前面的名称自定义即可

    2.压缩后,原文件不会丢失

    解压:  

    #unzip压缩文件名   

    #unzip    loring.zip    

    注意: 解压后,压缩文件也不会丢失

    在解压时,指定解压路径:

    #unzip压缩文件    -d   解压路径

    #unzip    loring.zip  -d    /tmp     

    #ls  -lh   /tmp    

    会发现两个文件:passwd  passwd1     

    压缩比:  

    #zip  tom.zip   passwd2   

    adding: passwd2 (deflated 99%)   

    压缩比=(原文件大小-压缩后文件大小)/原文件大小 

    注意: 压缩比越大,压缩后文件就越小,压缩的时间就越长

       压缩比越小,压缩后文件就越大,压缩的时间越短  

       压缩比的大小,不是固定的,要看文件的类型和里面的内容

    压缩级别: 压缩级别是固定的,可以影响压缩比

    压缩级别:1-9一共九个级别,数字越大,压缩级别越高  

    注意: 压缩级别越大,压缩比就越大

           压缩级别越小,压缩比就越小

    4.2 gzip  

    压缩:

    #gzip原文件名1   原文件名2    

    注意:文件是分开压缩,单独存放;压缩文件名是自动生成的

    #gzip    /loring/passwd3  

    #ls    /loring   

    passwd3.gz   

    注意:压缩后,原文件会丢失;压缩文件名的后缀为.gz    

    #file  /loring/passwd3.gz    

    解压缩: 

    第一种: 

    #gunzip压缩文件名    

    #gunzip   passwd3.gz   

    注意:解压后,压缩文件也会丢失

    第二种:

    #gzip   -d压缩文件名   

    #gzip   -d   passwd3.gz       

    -d:    Decompress ,解压  

    不解压查看:

    #zcat压缩文件名    

    #zcat     passwd3.gz     

    指定压缩级别:默认在6的压缩级别

    #gzip     -1   passwd4指定压缩级别为1  

    #gzip     -9   passwd5指定压缩级别为9   

    4.3 bzip2  

    压缩:

    #bzip2原文件名    

    #bzip2    passwd4     

    #ls   -lh  /loring   

    passwd4.bz2

    注意:压缩后,原文会丢失;压缩文件名的后缀为.bz2   

    解压:

    第一种: 

    #bunzip2     passwd4.bz2  

    注意:解压后,压缩文件会丢失   

    第二种:

    #bzip2    -d    passwd4.bz2    

    不解压查看:

    #bzcat压缩文件名  

    #bzcat      passwd4.bz2     

    指定压缩级别:

    #bzip2    -1   passwd4   

    #bzip2    -8   passwd5    

    保留原文件:

    在压缩时,保留原文件:

    #bzip2   -k   passwd5      

    在解压时,保留压缩文件: 

    #bunzip2  -k  passwd5.bz2   

    4.4 xz   

    压缩:

    #xz原文件   

    #xz    passwd5   

    注意:压缩后,原文件会丢失

    解压:

    第一种:

    #unxz压缩文件 

    #unxz       passwd5.xz  

    注意:解压后,压缩文件也会丢失   

    第二种:

    #xz    -d   passwd5.xz  

    不解压查看:

    #xzcat压缩文件 

    #xzcat     passwd5.xz       

    指定压缩级别:

    #xz    -3    passwd5  

    #xz    -7    passwd5     

    保留原文件: 

    压缩时保留原文件:

    #xz     -k原文件   

    #xz     -k   passwd5

    解压时,保留解压文件: 

    #unxz   -k压缩文件  

    #unxz   -k  passwd5.xz   

    4.5打包:  tar     必须会用    

    打包:归档 

    #tar    -cvf归档文件名      原文件1   原文件2  ...

    -c:  create创建归档文件  

    -v: verbose显示创建的过程  

    -f: file操作的文件   

    注意:只要使用了tar的命令,就必须有-f选项,而且该选项要放在所有选项的最后

    例: 

    #tar   -cvf   loring.tar     passwd1   passwd2  

    注意:默认tar打包的同时,没有压缩功能;如果要想压缩,要借调用压缩工具

    展开归档:

    #tar    -xvf归档文件名    

    -x:展开归档  

    #tar    -xvf     loring.tar   

    注意:不管是归档,还是展开归档,原文件都不会丢失 

    不展开归档查看:

    #tar     -tf归档文件   

    -t:不展开归档查看里面的文件名 

    #tar     -tf     loring.tar   

    向归档文件中,追加文件:    

    #tar    -rf归档文件名     添加的文件名   

    -r:追加   

    #tar    -rf      loring.tar     passwd3   

    #tar    -tf      loring.tar验证

    注意:归档文件必须在没有被压缩的时候,才能向里追加文件  

    归档时,调用压缩工具进行压缩: 

    创建归档时,调用压缩工具: 

    #tar    -zcvf归档文件名     原文件1  原文件2  

    -z: 借调用gzip压缩工具

    #tar    -jcvf归档文件名     原文件1  原文件2

    -j:借调用bzip2压缩工具 

    #tar    -Jcvf归档文件名     原文件1  原文件2

    -J: 借调用xz压缩工具  

    例: 

    #tar    -zcvf     loring.tar.gz    passwd1  passwd2   

    #tar    -jcvf     loring.tar.bz2   passwd1  passwd2   

    #tar    -Jcvf     loring.tar.xz    passwd1  passwd2   

    展开归档,并解压压缩:

    #tar    -zxvf     loring.tar.gz    

    #tar    -jxvf     loring.tar.bz2    

    #tar    -Jxvf     loring.tar.xz    

    注意:归档时调用哪个压缩工具进行压缩的,那么展开归档时,就应该还去调用同样的压缩工具,进行解压

    例如:#tar    -zxvf    loring.tar.bz2     就是错误的使用

    5.文件处理:排序、去重、切割、统计、过滤

    注意: 以上5个命令都是针对文件中的内容,都不会对原文件做任何修改,只会影响输出

    5.1排序: sort   

    5.1.1正向排序:

    #sort文件名     

    #sort    /etc/passwd    

    注意:默认sort会按照行首字母,根据ascii码的顺序,进行排序;a-z的顺序

    5.1.2逆向排序:  -r  

    #sort   -r文件名  

    #sort   -r   /etc/passwd   

    5.1.3按照数值大小排序: -n   

    #cat    a.txt  

    10

    10001

    111

    1010

    10202

    #sort    a.txt   

    10

    10001

    1010

    10202

    111

    #sort   -n   a.txt   

    即按照大小排序,又是倒序: 

    #sort   -n   -r    a.txt   

    5.1.4按照文件的字段进行排序:  字段-->列   

    准备:  

    #head  /etc/passwd   >  pass.txt     

    将passwd文件的前十行,放在pass.txt文件中,如果pass.txt不存在,会自动创建

    #sort   -t  "分隔符"   -k    第几列     文件名   

    #sort   -t  ":"    -k   3     pass.txt  

    以冒号分隔,按照第三列进行排序

    #sort   -t  ":"  -k  3   -n    pass.txt   

    按照第3列的数值大小进行排序 

    5.1.5排序同时并去重:

    #sort   -u文件名    

    #sort    -u    /etc/passwd   

    5.2去重:  uniq     -->  unique  唯一  

    准备: 

    #cat  b.txt  

     abc 

     123

     123

     abc

     abc

     123

    去重: 

    #uniq文件名   

    #uniq   b.txt   

    abc

    123

    abc

    123

    注意:默认uniq只能去掉相邻的重复行

    统计重复行出现的次数:

    #uniq   -c文件名   

    #uniq   -c    b.txt    

      1 abc

          2 123

          2 abc

          1 123

    去掉所有的重复行:

    先排序,再去重

    #sort   b.txt    |    uniq   

    注释:| 代表了无名管道,作用是将第一命令执行的结果,传递给第二个命令去执行

    作业: 将/etc/passwd文件中,第5行-第10行内容显示出来

    #sort   -u文件名    

    #sort   -u    b.txt   

    #sort   b.txt   |  uniq   -c     

    去掉所有的重复行,并且统计重复行的数量

    例如:可以统计一个IP地址,一共访问了多少次 

    5.3切割: cut     *****

    #cut    -d  "分隔符"    -f   第几列     文件名   

    单列输出:  

    #cut    -d   ":"    -f  3   /etc/passwd输出第3列  

    多列输出:

    离散:

    #cut   -d  ":"   -f  1,3,5     /etc/passwd输出第1列、第3列和第5列     

    连续:

    #cut   -d  ":"   -f   1-3     /etc/passwd输出第1列到第3列 

    注意: 默认输出的分隔符,和输入的分隔符保持一致;-d所指定的就是输入分隔符  

    指定输出分隔符: 

    #cut   -d  ":"  -f  1,3   --output-delimiter="--->"   /etc/passwd  

    --output-delimiter=指定输出分隔符  

    5.4统计:  wc     -->  word  count  

    统计所有信息:

    #wc文件名   

    #wc    /etc/passwd 

    35   54 1663 /etc/passwd

    行数   单词数量   字符的数量  文件名   

    统计行: 

    #wc    -l文件名 

    #wc    -l   /etc/passwd   

    统计单词:

    #wc    -w文件名  

    #wc    -w    /etc/passwd  

    统计字符: 

    #wc    -c文件名   

    #wc    -c    /etc/passwd   

    实验: 

    统计/tmp目录下,一共有多少个文件??

    #ls  -l  /tmp   |  wc  -l     

    注意:将得到数减1  

    5.5过滤: grep   *****

    grep:行级过滤器,会将匹配到的行,整行显示出来

    准备工作: 

    #alias   grep='grep  --color=auto'

    #useradd   loringroot  

    #useradd   rootloring  

    按照字符串进行过滤: 

    #grep   "字符串"   文件名    

    #grep   "root"    /etc/passwd    

    要将文件中,含有root字符串的行,过滤出来

    行首定位:^

    #grep    "^root"   /etc/passwd    

    代表了整行必须以root开头,^代表以谁开头

    实验: 

    将/etc/fstab文件中,以#开头的行过滤出来???

    #grep    "^#"    /etc/fstab  

    行尾定位:$

    #grep    "bash$"     /etc/passwd   

    代表一整行,必须以bash结尾,$代表了以谁结尾

    例:

    #cat    c.txt  

    rootrootroot  

    root  loring root  

    root

    rootloringroot  

    #grep  "^root$"   c.txt  

    整行中,只含有一个root字符串的行

    过滤文件中的空行:

    #grep    "^$"     /etc/passwd   

    词首的锚定:\<

    #grep   "root"    /etc/passwd

    #grep   "\

    在一行中,必须至少有一个单词,要以root开头 

    词尾的锚定:\>

    #grep   "root"   /etc/passwd  

    #grep   "root\>"    /etc/passwd  

    在一行中,必须至少有一个单词,要以root结尾

    #grep     "\"    /etc/passwd  

    在一行中,必须至少含有一个root的完整单词

    常见的选项: 

    -i  -v   -A  -B  -C   -rl   -R   

    #grep   -i   "root"   /etc/passwd  

    -i:忽略字符串的大小写 

    #grep   -v    "^#"   /etc/fstab    

    -v:取反,匹配到反而不显示,显示匹配不成功的  

    #grep   -v  "^$"   /etc/fstab    

    #grep  -A  3   "root"    /etc/passwd  

    -A:在匹配到行后,会再多向下显示几行

    #grep   -B  2   "root"   /etc/passwd   

    -B:在匹配到行之前,会再多显示几行

    #grep   -C  3    "root"   /etc/passwd   

    -C:在匹配到行的上下,会各多显示几行

    准备: 

    #mkdir   /loring/a/b/c/d/e/f

    #echo  hello  zhangsanfeng   >  /loring/a/b/c/d/e/f/haha.txt

    #grep   -rl  "zhangsanfeng"    /loring             ******

    #grep   -R   "zhangsanfeng"    /loring   

    根据文件中的内容,搜索文件的位置;只要文件中含有了zhangsanfeng字符串,就会被搜索出来

    相关文章

      网友评论

          本文标题:三.文件管理

          本文链接:https://www.haomeiwen.com/subject/qbwlcftx.html