zoukankan      html  css  js  c++  java
  • linux 命令 — 文件相关

    使用文件相关命令

    dd

    用来生成任意大小的文件

    dd if=/dev/zero of=junk.data bs=1m count=1
    生成一个1m大小的文件,里面全部使用0填充
    if: 指定输入文件,如果没有默认从stdin读取
    /dev/zero:是一个字符设备,它会不断返回0值字节()
    of:指定输出文件,如果没有指定默认输出到stdout
    junk.data:输出文件名称
    bs:设置输入、输出文件的大小,单位有字节(c),字(w),块(b),千字节(k),兆字节(M),吉字节(G)
    count:将输入copyn份到输出

    comm

    求出两个文件的交集,3列用Tab隔开,依次为:只有A有的,A、B都有的,只有B有的
    交集:两个文件相同的行

    sort A.txt -o A.txt; sort B.txt -o B.txt
    先对两个文件排序,-o指定排序后的输出文件

    comm A.txt B.txt
    对文件求差后输出

    comm A.txt B.txt -1 -3
    只输出两个文件的交集,共同的行
    -1:表示不输出第一列(A中包含,B中不包含)
    -2:不输出第二列
    -3:不输出第三列

    ``2:不输出第二列
    -3:不输出第三列

    comm A.txt B.txt -1 -3 | sed '/^ //'
    只输出第二列,并且删除第二列前面的tab空白

    文件的交集、并集、差集

    交集
    sort a.txt b.txt | uniq -d
    sort对两个文件进行排序
    uniq -d 输出文件中出现超过一次的行

    并集
    sort a.txt b.txt | uniq
    uniq 去除文件中重复的行,其他全部输出

    交集
    a-b
    sort a.txt b.txt b.txt | uniq -u
    对三个文件进行排序,b.txt中的行至少出出现两次
    uniq -u 输出文件中只出现过一次的行,也就是a.txt中有,而b.txt 中没有

    查找并删除文件

    #!/bin/bash
    # filename:remove_dumplicates.sh
    # usage: 查找并删除重复文件,没一个文件都只保留一个样本
    
    ls -lS | awk 'BEGIN {
        getline; getline;
        name1 = $9;size=$5
    }
    {
        name2=$9;size2=$5;
        if (size == $5) {
            cmd="md5sum "name1;cmd | getline; csum1=$1;close(cmd); 
            cmd="md5sum "name2;cmd | getline; csum2=$1;close(cmd);
            if (csum1 == csum2) {
                print name1;print name2;
            }
        };
        name1=name2;size=size2;
    }' | sort -u > duplicate_files
    
    cat duplicate_files | xargs -I {} md5sum {} | sort | uniq -w 32 | awk '{print "^"$2"$"}' | sort -u > duplicate_sample
    
    echo Rmoving
    comm duplicate_files duplicate_sample -2 -3 | tee /dev/stderr | xargs rm
    echo Removed duplicates files successfully.
    
    

    ls -lS: 列出文件详细信息并按照文件大小排序
    awk的BEGIN部分: 在awk读取输入前执行,getline是awk内置函数,读取一行,这里是为了跳过ls输出的Total
    接着找到第一行的文件名称和文件大小
    中间的"{}"表示awk循环每一行的时候执行的语句,里面先比较两个文件大小,大小一致才有可能是相同的文件,使用md5sum进一步确认,将相同内容的文件名称输出
    sort -u: 对输出的文件名称排序并去重(同一个文件名可能被输出多次,如果一个文件有多个相同内容的文件的时候,该文件名会被输出多次,需要去重),然后重定向到文件中,duplicate_files保存的是存在内容重复的多个文件名称

    md5sum: 接下来对于duplicate_files文件中的所有文件求出md5sum,
    sort: 然后排序,将md5sum相同(也就是存在重复的文件)依次输出
    uniq -w 32: 按照前面输出的前32个字符去重,md5的值就是32位的
    awk: 输出去重后的文件名
    sort -u: 排序去重后输出到duplicate_sample,目前duplicate_sample包含的是所有重复文件的一份样本的文件名

    comm duplicate_files duplicate_sample -2 -3: 只输出第一列,也就是需要被删除的文件名称
    tee /dev/stderr: tee读读取输入输出到文件/dev/stderr 并输出到stdout
    xargs rm: 删除

    创建长目录

    mkdir -p /var/test/dir1
    创建上面的目录路径,如果不存在则创建,如果存在也不会输出错误信息

    目录的权限

    读:允许读取目录中文件和子目录的列表
    写:允许在目录中创建或者删除文件
    执行:指明是否可以访问目录中的文件或者子目录

    创建不可修改的文件

    chattr +i file
    则file文件不可以修改删除,-i重置为可修改删除

    file

    查看文件类型信息
    file filename
    filename的文件类型

    file -b filename
    filename的文件类型(只包含文件类型信息,没有-b则输出文件名称和类型信息)

    环回文件

    通常,我们在硬件设备上创建文件系统,然后挂载在某个目录上,这个目录就是挂载点。如果是创建一个文件,格式化为文件系统的格式(ntfs, exfat, ext4等),然后挂载在某个目录上使用,这个新建的文件就是环回文件

    dd if=/dev/zero of=loopback.img bs=1G count=1
    创建一个1G的文件

    mkfs.ext4 loopback.img
    将该文件格式化为ext4

    file loopback.img
    查看文件格式

    mkdir /mnt/loopnack
    创建挂载点

    mount -o loop loopback.img /mnt/loopback
    将新建的文件作为换回文件挂载,-o loop 挂载环回文件

    仅列出目录下所有目录

    ls -d */

    ls -F | grep "/$"

    ls -l | gerp "^d"

    find . -type d -maxdepth 1

    wc

    wc file -L
    file中最长行的长度

    wc file -l
    file的行数,-l:行数,-w:单词数,-c:字符数

    对行、单词、字符进行迭代

    迭代行

    while read line
    do 
    echo $line;
    done < file.txt
    

    使用子shell

    cat file.txt | (while read line; do echo $line;done)
    

    迭代每一个单词

    for word in $line
    do
    echo $word
    done
    

    迭代一个单词的每一个字符

    for (i=0;i<${#word};i++)
    do
    echo ${word:i:1}
    done
    

    ${#var_name}: var_name表示变量,整体表示该变量值得长度
    ${string:start_position:char_count}: 截取字符串变量$string 中从start_position开始,char_count个字符,$(string:start_position)表示将变量$string 从start_position开始截取到最后
    ${string/line/replaced}: 使用replaced替换变量$string中的line

  • 相关阅读:
    网络监控之三:ifstat、iftop
    JavaScript框架比较
    Enterprise Architect
    设计模式:Abstract Factory和Builder(转)
    Flexibility Pattern架构和设计模式
    Struts的html:errors的用法
    更好的浏览器判定
    纯CSS细线伪表格
    javascript 随机数
    一些javascript题目
  • 原文地址:https://www.cnblogs.com/sunshine-2015/p/7130212.html
Copyright © 2011-2022 走看看