6 linux文件与目录管理

文章目录

  • 6.1目录与路径
    • 6.1.1相对路径与绝对路径
      • 相对路径的用途
      • 绝对路径的用途
    • 6.1.2目录的相关操作
    • 6.2.2cp、rm、mv
      • cp(复制文件或目录)
      • rm 删除文件或目录
      • mv(移动文件与目录,或重命名)
    • 6.5.2文件的查找
      • whereis(由一些特定的目录中查找文件)
      • locate/updatedb
      • find

  • 前一章:Linux下的文件权限概念以及目录的配置说明。
  • 本章节直接来进一步地操作与管理文件及目录,包括在不同的目录间切换、建立与删除目录、建立与删除文件,还有寻找文件、查看文件内容

6.1目录与路径

  • 前一章Linux的文件权限与目录配置中通过FHS了解了 Linux的树状目录概念
  • 绝对/相对路径的写法并不相同,要特别注意。
  • 此外,当你执行命令时,该命令是如何找到的?
  • 这与PATH这个变量有关

6.1.1相对路径与绝对路径

  • 绝对路径:路径的写法“一定由根目录/写起”,如:usr/share/doc
  • 相对路径:
    • 由usr/ share/doc要到/usr/share/man,
    • 写成:“cd…/man”这就是相对路径

相对路径的用途

  • / cluster/raid/output/taiwan2006 smoke,
  • / cluster/raid/outputtaiwan2006/cctm,
  • 从第一个要到第二个目录去的话,怎么写比较方便?
  • 当然是“cd./cctm”比较方便

绝对路径的用途

  • 但对于文件名的正确性来说,绝对路径的正确度要比较好。
  • 如果是在写程序(shl脚本)来管理系统的条件下,务必使用绝对路径。因为绝对路径的写法虽然比较麻烦,但是可以肯定这个写法绝对不会有问题。
  • 如果使用相对路径在程序当中,则可能由于你执行的工作环境不同,导致一些问题的发生。
  • 这个问题在计划任务(at与cron,第15章)当中尤其重要,且这个现象我们在12章 shell R脚本时,也会再次提醒你。

6.1.2目录的相关操作

  • 下面这些就是比较特殊的目录

6 linux文件与目录管理_第1张图片

  • 所有目录下面都会存在的两个目录,
  • .与…分别代表此层与上层目录。

6 linux文件与目录管理_第2张图片

here

6.2.2cp、rm、mv

  • 复制文件,用cp即可,
  • 除了单纯的复制之外,还可以建立链接文件(就是快捷方式),比对两文件的新旧而予以更新,及复制整个目录。
  • 移动目录与文件,用mv,也可直接拿来做重命名。

cp(复制文件或目录)

here

rm 删除文件或目录

  • 为了怕文件被root误删,很多Linux发行版都默认加-i
  • 而如果要连目录下的东西都一起删除的话,例如子目录里面还有子目录时,那就要用-r
  • 用rm -r前,注意,因为该目录或文件肯定会被root删除。
  • 因为系统不会再次询问你是否要删除
  • 如果确定该目录不要,用mr -r递归删除是不错的

  • 范例四,文件名最好不要用"-“号开头,因为”-"后面接的是选项,
  • 单纯的用【rm-aa-】系统的命令就会误判,那如果使用后面会谈到的正则表达式时,还是会出问题。所以,只能用避过首位字符是"-“的方法,就是加上本目录“,””即可。
    如果 man rm的话,其实还有一种方法,那就是【rmーー-aaa-)也可以。

here

mv(移动文件与目录,或重命名)

  • 移动文件或目录的时候,
  • 用-u(update)来测试新旧文件,看看是否需要移动。
  • 另外一个用途就是修改文件名,用mv来修改一个文件的文件名
  • rename命令更改大量文件的文件名,用 man rename来查看一下

6.5.2文件的查找

  • Linux下有相当优异的查找命令,通常find不很常用。
    • 速度慢,也影响硬盘性能
  • 都先用 whereis或是 locate来检查,
    • 如果真找不到,
    • 才以find
  • 因为 whereis只找系统中某些特定目录下面的文件,
    • locate则是利用数据库来查找文件名,
    • 且没有实际查找硬盘内的文件系统状态,省时

whereis(由一些特定的目录中查找文件)

  • (find直接查找硬盘,如果你的硬盘比较老旧的话)
  • whereis就相当好用了。
  • whereis可以加入选项来查找相关的数据,
  • 如果你是要找可执行文件( binary),加上-b。
  • 如果不加任何选项的话,那么就将所有的数据显示出来。

  • whereis为何查找的速度会比find快这么多?其实也没有什么,
    • whereis只找几个特定的目录,没有全系统查询
  • whereis主要是针对/bin/sbin下面的执行文件,
    • /usr/share/man下面的 man page文件,
    • 跟几个比较特定的目录来处理,所以速度快
  • 不过,有某些文件是你找不到的
  • whereis到底查了多少目录?
    • whereis -l

locate/updatedb

  • locate直接在后面输入文件的部分名称后,就能够得到结果。
  • locate passwd,完整文件名(含路径名称)
    • 只要有 passwd就被显示。
    • 尤其是在你忘记某个文件的完整文件名时。

  • locate寻找数据特别快
    • locate寻找的数据是由已建立的数据库/var/lib/mlocate/里数据所查找到的,
    • 不直接再去硬盘中读数据

  • 它是经由数据库来查找的,
    • 数据库的建立默认是在每天执行一次
    • 每个发行版都不同, Centos7.x每天更新一次

  • 更新 locate数据库的
    • 直接输入updatedb
  • updatedb会去读取/etc/updatedb.conf的设置
    • 再去硬盘里面查找文件名的
    • 最后就更新整个数据库文件
    • updatedb会去査找硬盘,当执行updatedb时,等待数分钟
  • locate:依据/var/lib/locate内的数据库记录
    • 找出用户所输入关键词的文件名

find

  • atime、ctime与 mtime的意义
  • 如果你想找出一天内被修改过的文件,上述范例一
  • 找出4天内被修改过的文件?find /var -mtime -4
  • 那如果是4天前的那一天用
    • find /var -mtime 4, 有没有【+,-】差别大

6 linux文件与目录管理_第3张图片

  • 想找出某个用户在系统下面建啥东西,用上述的选项与参数。
  • 那个-nouser或-nogroup的选项功能中,
    • 由网络上面下载文件时会发生之外,
    • 如果你将系统里面某个账号删除了,但该账号已经在系统内放了很多文件时
    • 得用这个- nouser来找出该类型的文件。

你可能感兴趣的:(鸟哥)