Linux Command Line 学习笔记5

Linux Command Line 学习笔记5

说明;写Linux Command Line 学习笔记系列文章本意只是记录自己学习《Linux Command Line 》 这本书的过程中看到的一些自己没有留意到的地方,因此绝大多数内容只是记录了相关知识点而没有实际扩展内容,纯粹是为了自己后期回顾时有迹可循。另外,因为直接看的原版书,所以有些地方中英混杂。更详细地学习建议去阅读原书即可。

Searching For Files 文件查找

linux 倡导所谓的一切皆文件,那我们怎么在系统中查找到自己想要的文件呢。

locate 查找文件的简单方法

  • 搜索路径名数据库,并且输出每个与给定字符串相匹配的文件名

  • locate bin/zip 搜索bin路径下所有包含zip的路径名

  • 可以结合grep一起使用提高效率

  • locate 的搜索数据库由updatedb程序创建,并不是实时更新。因此找到的文件不是最新的

  • updatedb可以使用root进行手动更新

find查找文件的复杂方法

  • 需要明确的一点:find是一个非常神奇的命令

  • find最简单的用法是给定一个或者多个目录名去搜索 如 find ~ (搜索自己的家目录)

  • find下有三层操作方式,分别是options,testsactions(详细的信息可以查看help帮助文档)

  • test
    find ~ -type d

  • -type属于测试操作,用来限定查找类型

    b 块设备文件
    c 字符设备文件
    d 目录
    f 普通文件
    l 符号链接
  • 根据文件名和文件大小进行搜索

    find ~ -type f -name "\*.JPG" -size +1M
    这里需要加入双引号防止shell展开路径名
    +1M表示大于1M,不加任何符号表示精确匹配
  • 其他可能会用到的几个test条件

    -name pattern 用指定的通配符模式匹配的文件和目录
    -iname pattern 类似-name测试条件,不区分大小写
    -nouser 匹配的文件和目录不属于一个有效用户
    -nogroup 匹配的文件和目录不属于一个有效的组
    -size n 匹配的文件大小为n
    -type c 匹配的文件类型是c
    -user name 匹配的文件或目录属于某个用户,通过用户名或用户ID来表示
    -group name 匹配的文件和目录属于一个组,用组名或组ID来表示
    -cmin n 匹配的文件和目录的内容或属性最后修改时间正好在n分钟之前
    -ctime n 匹配的文件和目录的内容和属性最后修改时间在n\*24小时之前
    -newer file 匹配的文件和目录的内容早于指定的文件。当编写shell脚本,做文件备份时非常有帮助
    -empty 匹配空文件和目录
    -inum n 匹配的文件的inode号是n,找到某个特殊inode的所有硬链接
    -perm mode 匹配的文件和目录的权限是指定的mode。mode用八进制或符号表示。
  • options

    使用逻辑操作符建立逻辑关系

    查找权限不是0600 的文件和权限不是0700 的目录方法

    find ~ \( -type f -not -perm 0600 \) -or \( -type d -not -perm 0700 \)
    -and 符两边的测试条件都是真则匹配(默认操作)
    -or 若两边的任一测试条件为真则匹配
    -not 若后面的测试条件是真则匹配
    () 把测试条件和操作符组合起来控制逻辑优先级,使用时用反斜杠进行转义
  • Predefined Actions 预定义操作

    -delete 删除匹配文件
    -ls 对匹配的文件执行等同的ls -dils 命令。并将结果发送到标准输出。
    -print 把匹配文件的全路径名输送到标准输出。如果没有指定其它操作,这是默认操作。
    -quit 一旦找到一个匹配,退出。
  • xargs

    从标准输入接受输入,并把输入转换为一个命令的参数

    如果文件名中有空格,需要使用-print0

    find ~ -iname ‘*.jpg’ -print0 | xargs –null ls -l

  • find其他参数

    -depth 指导find 程序先处理目录中的文件,再处理目录自身
    -maxdepth levels 当执行测试条件和行为的时候,设置目录深度
    -mindepth levels 在应用测试条件和行为之前,设置目录深度
    -mount 指导find 程序不要搜索挂载到其它文件系统上的目录

Archiving And Backup存档备份

压缩

  • 不要压缩已经压缩过的文件

  • gzip/gunzip 压缩后会取代原始文件 权限和时间戳不变

    -c 把输出写入到标准输出,并且保留原始文件。等价于zcat
    -d 解压缩,等价于gunzip
    -f 强制压缩
    -l 显示文件的压缩比例和大小
    -r 递归压缩目录
    -t 测试压缩文件的完整性
    -v 显示压缩过程中的信息
    -number 设置压缩指数。1最快,9最小,默认值6
  • bizp2 速度慢压缩程度更高

    相应命令有bunzip2; bzcat

存档

  • 多个文件整合为一个文件的过程

  • tar

    参数分为mode和options,必须首先包含一个操作模式

    -A, 将一存档与已有的存档合并
    -c, 建立新存档
    -d, 比较存档与当前文件的不同之处
    --delete 从存档中删除
    -r, 附加具体路径到存档结尾
    -t, 列出存档内容
    -u, 将较新的文件附加到存档中
    -x, 从存档展开文件

    归档 tar cvf FileName.tar DirName (f要紧跟内容)

    展开 tar xvf FileName.tar

    配合gzip压缩解压

    • 解压:tar zxvf FileName.tar.gz
    • 压缩:tar zcvf FileName.tar.gz DirName

    配合bzip2

    • 压缩 tar cjf FileName .tar.bzDirName
    • 解压 tar jxvf FileName .tar.bz

同步 rsync

  • rsync options source destination

  • sourcedestination 指代

    • 一个本地文件或目录
    • 一个远端文件或目录,以[user@]host:path 形式存在
    • 一个远端rsync 服务器,由rsync://[user@]host[:port]/path 指定
    • 必须有一个本地文件
  • 具体用法待补充


本文作者:思考问题的熊

版权声明:本博客所有文章除特别声明外,均采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 (CC BY-NC-ND 4.0) 进行许可。

# linux
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×