linux 常用命令

拷贝

拷贝指定的文件到指定的目录并保持原始的目录结构:

tar c $(find . -type f -name '*.src*') | tar x -C destDir
tar c $(find . -type f -ctime -5 -name '*.src*') | tar x -C destDir
find . -type f -ctime -5 -name '*.src*' | xargs tar c | tar x -C destDir

拷贝目录结构:

find . -type d  -name srcDir -exec mkdir -p destDir/'{}' \; 
find . -type d  -name uartTest -exec mkdir -p test/\{\} \;
#后面的';'不能少,最后一个'\'之前有个空格
格式不对会出现find: missing argument to `-exec'的错误!

拷贝指定的多个文件到指定的目录并保持原始的目录结构:

#!/bin/bash
if [ $# -lt 2 ] 
    then 
    echo 
    echo "Usage: ./cpfiles.sh destDir/ srcFile1.c srcFile2.c srcFile.java ..."
    echo "Function: copy srcFile1.c srcFile2.c srcFile.java to destDir/ and create the original directory structure"
    echo 
    exit 
else

    for var in $@
    do
        if [ $var != $1 ] 
        then
        # fs=$(find . -type f -name $var)
        echo "copying $var..."
        find . -type f -name $var | xargs tar c | tar x -C $1
        else
            if [ ! -d $var ]
                then 
                echo "$var not exists!"
                echo "exit"
                exit
            else
                echo "copying files to $1"
            fi
        fi
    done

    echo "Finished!"
fi

分卷压缩解压

要将目录logs打包压缩并分割成多个1M的文件,可以用下面的命令:
tar cjf - logs/ |split -b 1m - logs.tar.bz2.
完成后会产生下列文件:
logs.tar.bz2.aa, logs.tar.bz2.ab, logs.tar.bz2.ac
要解压的时候只要执行下面的命令就可以了:
cat logs.tar.bz2.a* | tar xj

再举例:
要将文件test.pdf分包压缩成500 bytes的文件:
tar czf - test.pdf | split -b 500 - test.tar.gz
最后要提醒但是那两个”-“不要漏了,那是tar的ouput和split的input的参数。
tar cjf - logs/ |split -b 1m - logs.tar.bz2.
完成后会产生下列文件:
logs.tar.bz2.aa, logs.tar.bz2.ab, logs.tar.bz2.ac
要解压的时候只要执行下面的命令就可以了:
cat logs.tar.bz2.a* | tar xj

MD5校验

md5sum p182 > cc.txt
cat cc.txt
0f0b000b096ac947d6067466cc60ffd0 p182
修改文件后
md5sum p182 -c cc.txt
md5sum: p182: no properly formatted MD5 checksum lines found
p182: FAILED
md5sum: WARNING: 1 of 1 computed checksum did NOT match

你可能感兴趣的:(linux)