Week 5 Linux 目录与文件

本文详细介绍Linux系统下的目录管理,包括路径名的理解、当前工作目录的切换、目录的创建与删除、复制操作,以及find命令的高级使用,用于目录遍历和文件搜索。同时,文章还介绍了如何批量处理文件和使用tar命令进行打包与压缩。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、目录管理

1. 路径名

  • 文件.与…
    在目录表中确实有两个文件,这两个目录项由系统创建和删除。
  • 主目录Home Directory
    每个用户都有自己独立的主目录
    env命令查看环境变量HOME的值
  • 绝对路径名与相对路径名
    路径分隔符用/
  • 当前工作目录
    是进程属性的一部分,每进程一个

2. 打印pwd/改变cd当前目录

  • pwd:打印当前工作目录
    ~也可以实现这个功能
  • cd(Change Directory):改变当前工作目录
    • cd .. 返回上级目录
    • cd 不加参数 回到用户主目录Home
    • cd - 回到最近的工作目录
    • cd是shell的一个内部命令

3. 创建mkdir/删除目录rmdir

  • 创建目录mkdir
    除了创建目录外,系统会自动建立文件...
    选项-p 自动创建路径中不存在的目录,例如home文件夹下没有目录,但是使用命令mkdir -p home/a/b/c/log会自动创建a、b、c、log目录
  • 删除目录rmdir
    要求被删除的目录只含...两个文件选项
    -r递归地删除目录

4. 复制目录cp

  • 选项-r递归地复制一个目录
    cp -r dir1 dir2

    • 若dir2不存在,则新建子目录dir2,把dir1的内容拷贝到dir2下
      cp -r dir1 dir2
      在这里插入图片描述
    • 若dir2已存在,则在dir2下新建子目录dir1,把dir1内容拷贝到dir2/dir1下
      cp -r dir1/* dir2
      在这里插入图片描述
  • 选项-v 冗长verbose方式
    复制目录时实时列出正在复制的文件的名字
    在这里插入图片描述

  • 选项-u 增量拷贝update,便于备份目录

    • 根据文件的时间戳,不拷贝相同的或者过时的版本的文件,以提高速度;
    • dir1和dir2不慎颠倒位置,也不会发生灾难性后果
  • 示例:已存在a、b文件夹,不存在c文件夹
    在这里插入图片描述
    在这里插入图片描述

  • touch:将文件最后一次修改时间设置为当前时间,但是不修改文件内容
    在这里插入图片描述

二、目录遍历的命令find

  • find从指定的查找范围开始,递归地查找子目录,凡满足条件的文件或目录,执行规定的动作
    对文件通配符的解释由find完成
    例如find sdir1 sdir2 -name '*.c' -print
    范围:sdir1和sdir2是当前目录的两个子目录;
    条件:与名字‘*.c’匹配,要注意引号的使用;
    动作:print 把查找到的文件的路径名打印出来
    在这里插入图片描述

1. 条件选项

1)-name

匹配文件名,即路径中最后一部分

2)-regex

匹配整个路径名
有的会提示找不到该命令

3)-type

-type的选项有
f:普通文件 d:目录 l:符号连接文件
c:字符设备文件 b:块设备文件 p:管道文件
在这里插入图片描述

4)-size

限制查找的文件大小
-size +n单位:大于
-size -n单位:小于
不加加减号表示等于

  • 单位:c(字符),b(块,512字节),k(1024),M(兆),G(吉)。默认为b

5)-mtime

-mtime +ndays
-mtime -ndays :文件最近修改时间,days不用出现在命令中
在这里插入图片描述

6)-newer file

查找文件最近修改时间比file晚的文件

7)其他条件选项

可以查阅find手册,man find

8)复合条件

注意空格
可以用

  • ()表示多条件的
  • -o表示
    \( \)与命令之间要注意空格
    在这里插入图片描述
  • !表示

2. 动作选项

1)-print

打印查找到的文件的路径名

2)-exec

对查找到的目标执行命令;
-exec及随后的分号;之间的内容作为一条命令;
在这命令的命令参数中,{}代表遍历到的目标文件的路径名,中间没有空格
在这里插入图片描述
{}之间没有空格,{}\;之间有一个空格

3)-ok

与-exec类似,只是每次执行命令之前需要用户的确认

三、批量处理文件

例如:
find . -name '*.c' -print | xargs grep -n -- --help
中的xargs可以实现将查到找的文件名列表追加给grep命令
这就实现了find精确筛选,利用grep批量处理文件。

  • xargs:将标准输入组织成命令执行
    选项-n可以指定每批处理多少个文件
    可以解决shell文件名生成时,因为文件太多,缓冲区空间受限而文件名展开失败的问题;

四、打包与压缩

1. tar:文件归档

tar(Tape ARchive)
tar ctxv[f device] file-list

文件名后缀.tar,.tar.gz,.tar.bz2仅仅是惯例,不是系统级强制要求

1)功能选项

  • 选项-c:create 创建一个新的磁带
  • 选项-t:list 列出待打包的文件列表
  • 选项-x:extract 从磁带中抽取指定的文件

2)其它选项

  • v:verbose冗长,每处理一个文件,就打印出文件的文件名,并在该名前冠以功能字母
  • f:File,后面要紧跟设备文件名
  • z:压缩算法gzip
  • j:压缩算法bzip2

压缩算法gzip执行速度比bzip2快,但是bzip2的压缩效率比gzip高,也占用更多的CPU时间
在这里插入图片描述

举例:

  • tar cvf /dev/rct0 .
    将当前目录树.备份到设备/dev/rct0
    在这里插入图片描述
  • tar tvf /dev/rct0
    查看磁带设备/dev/rct0上的文件目录
    在这里插入图片描述
  • tar xvf /dev/rct0
    将磁带设备/dev/rct0上的文件恢复到文件系统中
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值