#006 以文件之名

以文件之名

#006 以文件之名_第1张图片

文件类型

符号 文件类型
- 常规文件,即f
d 目录文件
b 块设备文件
c 字符设备文件
l 符号链接文件
p 命名管道
s 套接字文件

目录管理

创建目录

mkdir DIR

删除目录

rmdir DIR

显示目录树,n是数字,代表目录树的深度

tree -L n DIR

文件查看

将多个文件串联起来显示在标准输出

cat [OPTION]... [FILE]...

    #OPTIONS:
        #-e:转义字符
        #-n:显示行号 

显示文件行首第一行到n行,默认为10行

head -n FILE...

显示文件末尾行到倒数第n行,默认为10行

tail -n FILE...

    #-f:查看文件尾部内容不退出,跟随显示新增的行。常用于查看动态日志内容

从文件行首,通过翻屏细读文件

more FILE...

从文件行尾,通过翻屏细读文件

less FILE...

显示文件类型

file FILE

显示文件的元数据信息

stat FILE

文件管理

创建一个临时的文件或目录,至少3个大写X

mktemp FILE.XXXX

复制文件

cp [OPTION]... SOURCE... DIRECTORY

 # OPTIONS:
 # -i:提示是否覆盖
 # -f:强制覆盖原有文件
 # -r:递归复制
 # -d:父子链接文件本身,不复制指向的链接文件
 # --preserve=all:保留源文件的元数据信息

移动文件

mv SOURCE DIRECTORY

删除文件或目录

rm [OPTION]... FILE...

# OPTIONS:
# -i:交互式提示
# -r:递归删除
# -d:删除空目录
# -f:强制删除

文件查找

在某一路径下查找文件有两种方式:locatefind命令

locate find
依赖于事先构建好的索引库 实时遍历
查找速度快 查找速度慢
模糊查找 精确查找
非实时查找 实时查找

locate命令

locate [OPTION]... PATTERN...

# OPTIONS:
# -b:只匹配路径中的基名
# -c:统计符合条件的文件的个数

find命令

find [OPTIONS] [查找起始路径] [查找条件] [处理动作]

查找条件

  1. 文件名
  2. 从属关系
  3. 文件类型
  4. 文件大小
  5. 文件权限
  6. 文件时间戳
  7. 组合测试
文件名
find /etc -name "PATTERN"

# OPTIONS:
# -name pattern:文件名,满足blob通配符
# -iname pattern:忽略大小写
# -regex pattern:基于正则表达式(开头最好带.*)
# -iregex pattern:忽略大小写
从属关系
find /etc -user USERNAME

# OPTINOS:
# -user USERNAME:属主
# -group GROUPNAME:属组
# -uid UID:属主UID
# -gid GID:属组GID
# -nouser:查找没有属主的文件
# -nogroup:查找没有属组的文件
文件类型
find /etc -type f

# OPTIONS:
# f:普通文件
# d:目录文件
# l:符号链接文件
# b:块设备文件
# c:字符设备文件
# p:管道文件
# s:套接字文件
文件大小
find /etc -size 100K

# OPTIONS:
# #[K|M|G]:具体字节大小在同一个单位上换算的数值相等
# +#[K|M|G]:大于100K
# -#[K|M|G]:小于100K
文件权限
find /etc -perm 222

# OPTIONS:
# MODE:精确权限匹配
# /MODE:或者关系;任何一类用户(u,g,o)的权限中的任何一位(r,w,x)符合条件即满足;
# -MODE:与关系;同时符合条件即满足
# +MODE:老版本;现在已经被/MODE替代。
文件时间戳
find /etc -atime 3

# OPTIONS:
# -atime:以天为单位访问时间
# n:过去第n天
# +n:n天前
# -n:n天内
# -mtime:以天为单位修改时间
# -ctime:以天为单位更改时间
# -amin:以分钟为单位访问时间
# -mmin:以分钟为单位修改时间
# -cmin:以分钟为单位更改时间
组合测试
find /etc -user root -a -perm 222

# OPTIONS:
# -a:与(默认)
# -o:或
# -not,!:非

处理动作

  • -print:输出至标准输出(默认)
  • -ls:类似于对查找到的文件执行“ls -l”命令
  • -delete:删除查找到的文件
  • -fls /PATH/TO/FILE:将查找到的文件的长格式信息保存到指定文件中
  • -exec COMMADN {} \; :对查找到的文件执行COMMAND命令
  • -ok COMMAND {} \; :对查找到的每个文件执行COMMAND命令,并且每次操作都由用户确定。

"{}"是对查找到的文件名的引用

find命令与xargs命令的结合

find传递查找到的文件路径后面的命令时,是先查找出所有符合条件的文件路径,并一次性传递给后面的命令。有些命令不能接受过长的命令,此时命令会失败,find与xargs结合可规避此问题

xargs - build and execute command lines from standard input

xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令的命令参数。xargs也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。xargs的默认命令是echo,空格是默认定界符。这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代。xargs是构建单行命令的重要组件之一。

xargs用法

xargs [OPTIONS] [COMMAND [COMMAND-ARGS]]

# OPTIONS:
# -n #:每行输出#个元素
# -d "X":指定分隔符为X
# -I(大写i):每个参数命令都会执行一次
# -0:分隔符为0或null字符,配合-print0使用

复制所有图片到/data/images目录下

ls *.jpg | xargs -n1 -I cp {} /data/images

查找出当前目录下文件名后缀为.log的文件,并将其删除

find . -type f -name "*.log" -print0 | xargs -0 rm -f 

将当前目录下的所有.jpg的图片进行归档压缩

find . -type -f -name "*.jpg" -print | xargs tar zcf images.tar.gz

文件压缩和归档

文件压缩

只能压缩文件

  1. gzip
  2. bzip2
  3. xz

gzip/gunzip/zcat

gzip [OPTIONS]... FILE...

# OPTIONS:
# -d:解压缩,相当于gunzip
# -#:指定压缩比(默认是6);压缩比(1-9)越大,所消耗的cpu时钟周期越长
# -c:将压缩结果输出至标准输出;通过重定向至FILE.gz保存压缩

解压缩

gunzip FILE

压缩后,查看其内容

zcat FILE.gz

bzip2/bunzip2/bzcat

bzip2 [OPTIONS]... FILE...

# OPTIONS:
# -d:解压缩
# -#:指定压缩比
# -k:保留原文件

xz/unxz/xzcat

xz [OPTIONS]... FILE...

# OPTIONS:
# -d:解压缩
# -#:指定压缩比
# -k:保留原文件

文件归档并压缩

将多个文件并成一个文件

tar [OPTION]… FILE… 

# 归档OPTIONS:
# -cf FILE.tar /PATH/FILE...:创建归档
# -xf FILE.tar -C /PATH/DIR:展开归档至指定目录下
# -tf /PATH/FILE.tar:查看归档文件中的列表

# 归档并压缩OPTIONS:
# -zcf /PATH/FILE.tar.gz /PATH/DIR:归档并压缩为FILE.tar.gz
# -zxf /PATH/FILE.tar.gz:解压缩并展开归档

# 归档并压缩OPTIONS:
# -jcf /PATH/FILE.tar.bz /PATH/DIR:归档并压缩为FILE.tar.gz
# -jxf /PATH/FILE.tar.bz:解压缩并展开归档

# 归档并压缩OPTIONS:
# -Jcf /PATH/FILE.tar.xz /PATH/DIR:归档并压缩为FILE.tar.gz
# -Jxf /PATH/FILE.tar.xz:解压缩并展开归档

zip:最通用的压缩工具,既能归档又能压缩,但是压缩比有限

#压缩
zip FILE.zip /PATH/FILE

#解压缩
unzip FILE.zip

你可能感兴趣的:(linux,Linux运维学习之路)