拷贝
拷贝指定的文件到指定的目录并保持原始的目录结构:
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