首页 > 技术文章 > 文件管理(高级)

chijintao 2021-06-18 12:05 原文

文件管理(高级)

 

 

 

1 文件查找

 

# 查找命令所在位置
​
which ls
...
​
ps: 一些命令的路径都被配置到了环境变量PATH里
​
​
​
# 根据文件属性查找文件(find)(可以给多个查找条件)
​
前戏: 
    find 路径 命令 参数
    共用参数:
        -a : 并且(默认)
        -o : 或者
例:
    [root@python test]# find ./ -size -30M -o -size +50M
    ./
    ./txt
    ./txt2
​
1 按照文件名查找
    -name"xxx" : 查找xxx文件
例:
    [root@python ~]# find /root/ -name "txt*"
    /root/txt2
    /root/a/b/c/txt2
        
2 按照文件的创建时间来查找
    -ctime : 按照创建时间查询
    -mtime : 按照修改时间查询
    -atime : 按照访问的时间查询
    
    +7     : 7天以前创建
    -7     : 7天以内创建
    7      : 正好第7天前创建
例:
    # 3天以内创建
    [root@python ~]# find /root/ -ctime -3
    # 3天以前创建
    [root@python ~]# find /root/ -ctime +3
    
3 按照文件属主、属组查找
    -user  : 属主
    -group : 属组
例:
    [root@python ~]# find /root/  -user egon # 属主是egon的文件
    /root/txt
    [root@python ~]# find /root/  -group test # 属组是test的文件
    /root/txt
    
4 按照文件的大小查找
    -size   :大小
例:
    find /root/ -size +50M : 查询大于50M的文件
    find /root/ -size 20M  : 查询等于20M的文件
    find /root/ -size -60M : 查询小于60M的文件
    
5 设置查询最高的目录层级/指定查找的目录深度(-maxdepth必须放在第一位)
    -maxdepth 层级数
例:
    [root@python ~]# find /root/  -maxdepth 3 -a  -size +40M
    /root/txt2
    [root@python ~]# find /root/  -maxdepth 6 -a  -size +40M
    /root/txt2
    /root/a/b/c/txt2
    
6 按照文件类型来查询
    # 按照目录查询
        -type d
    例:
        [root@python ~]# find /root/ -type d
    # 按照普通文件来查询
        -type f
    例:
        [root@python ~]# find /root/ -type f
    # 查看设备文件
        -type c
    例:
        [root@python dev]# find /dev/ -type c
    # 文件类型
    
        f  # 普通
        d  # 目录
        l  # 链接
        b  # 快设备
        c  # 字符设备
        s  # 套接字
        p  # 管道文件
​
7 按照权限来查询
​
前戏: 
    rw-r--r--:
    
    rw- : 所属用户    (6)
    r-- : 所属用户组  (4)
    r-- : 其他用户    (4)
    
    r(4) : 只读
    w(2) : 只写
    x(1) : 执行
    
    chmod : 修改文件权限
        chmod 755 文件路径
    chown : 修改所属用户及用户组
        chown 用户.用户组 文件路径
        
    -perm 权限 : 按权限级别查找
例:
    [root@python test]# ll
    总用量 122880
    -r--r-----. 1 test user1 20971520 6月  16 17:33 txt
    -rw-r--r--. 1 root root  41943040 6月  16 17:33 txt1
    -rwxr-xr-x. 1 root root  62914560 6月  16 17:33 txt2
    [root@python test]# find ./  -perm 440
    ./txt
    [root@python test]# find ./  -perm 644
    ./txt1
    ./txt2
​
8 处理查询结果
    # 1 直接跟命令(有些命令不能使用,不推荐)
    例:
        [root@python test]# find ./  -perm 755 -ls
        202362858    0 drwxr-xr-x   2 root     root           41 6月 16 17:59 ./
        134514204 61440 -rwxr-xr-x   1 root     root     62914560 6月 16 17:33 ./txt2
        
    # 2 exec(推荐)
    # {} : 代表前面查询出来的内容,相当于一个容器
    -exec 命令 {} 路径 \;
    例:
        find ./ -size +50M -exec cp {} /opt/ \;
    
    # 3 使用管道
    # xargs是将前面命令执行的结果先用一个{}来保存,然后用{}取出来处理
    | xargs -I {} 命令 {} 路径
    例:
        find ./ -size +50M | xargs -I {} cp {} /mnt/

 

 

 

 

 

2 上传与下载

 

wget : 下载文件
    (yum install wget -y)
​
wget url
    -O : 指定下载文件的路径及名称
​
curl : 读取文件
    -o : 指定下载文件的路径及名称
    -k : 免证书认证
    
sz : 从Linux系统下载文件
    (yum install lrzsz -y)
​
rz : 上传文件
    rz 文件路径

 

 

3 输出与重定向

 

0   : 标准输入
1   : 标准输出
2   : 标准错误输出
&   : 标准输出及错误输出
​
命令  >> file 2>&1 等价于 命令 &>>file

 

 

 

 

4 字符处理命令

 

# 1 排序
sort
    参数:
    -n # 依照数值的⼤⼩排序
    -r # 以相反的顺序来排序
    -k # 以某列进⾏排序
    -t # 指定分割符,默认是以空格为分隔符
例:
    [root@python ~]# sort -t ":" -n -k2 3.txt 
    g:0
    k:2
    j:3
    d:7
    h:8
    l:9
​
# 2 重复
uniq
    参数
    -c # 在每列旁边显示该⾏重复出现的次数。
    -d # 仅显示重复出现的⾏列。
    -u # 仅显示出⼀次的⾏列。
​
# 3 字符串分割命令
cut
    参数
    -d # 指定字段的分隔符,默认的字段分隔符为"TAB"-f # 显示指定字段的内容;
例:  
    cat /etc/passwd | cut -d: -f7
    cat 4.txt | sort | uniq -c | sort -r | head -n 3 | cut -d " " -f8
​
# 4 字符串替换
tr
    参数
    -d # 删除字符
例:
    cat /etc/passwd | tr "root" "ROOT"
​
# 5 统计字数的
wc
    参数
    -c # 统计⽂件的Bytes数;
    -l # 统计⽂件的⾏数;
    -w # 统计⽂件中单词的个数,默认以空⽩字符做为分隔符

 

 

5 打包压缩

 

# 压缩与解压
gzip :
    参数
    -l : 显示压缩包的列表信息
    -q : 静默输出
    -d : 解压到指定目录
    
    压缩
        gzip 文件路径
    解压
        gzip -d 1.txt.gz
​
# 打包与解压
​
tar : 打包
    参数
    -f : 指定打包的名称
    -c : 将某些文件进行打包
例:
    tar -c -f test.tar 1.txt
        
    -v : 显示打包的整个过程  
    -z : 指定使用gzip压缩工具进行压缩
    -j : 使用bzip2压缩工具进行压缩
        
tar : 解压
    参数
    -f : 指定打包的名称
    -x : 将某些打包文件进行解压
    -v : 显示解压的整个过程

 

 

6 软链接

 

软连接相当于Windows中的快捷方式,
​
ln -s 源路径  目标路径
 

 

 

推荐阅读