1. tar – linux中最常用的归档/压缩工具
配合gzip, bzip2, 和xz 可以实现压缩的功能。 基本语法:
# tar [options] [pathname ...]
常用选项:
c 归档
x 解归档或解压缩
v 显示过程
f file 归档的文件
X --exclude-file 排除某个文件中列举的文件名
--exclude 排除某个目录或文件
-p, --preserve-permissions, --same-permissions 提取文件或目录的权限,使用root用户默认保持
-u, --update 更新归档文件中的某个文件
--delete 删除归档文件中的某个文件
-r, --append 为归档文件添加新文件
-t, --list 列举归档文件中的文件列表
-C, --directory=DIR 解压到目录
归档并压缩命令如下,其中f
后跟的文件名称一般用.tar.gz
等来结尾,但是不是强制的。
# 帮助如下
–gzip or –gunzip z Processes an archive through gzip
–bzip2 j Processes an archive through bzip2
–xz J Processes an archive through xz
# 例子:
# tar czf myfiles.tar.gz file[0-9]
# tar cjf myfiles.tar.bz2 file[0-9]
# tar cJf myfile.tar.xz file[0-9]
常用的例子如下:
# 归档文件
tar cf myfiles.tar file[0-9]
# 归档并压缩文件
tar czf myfiles.tar.gz file[0-9]
# 查看归档的文件列表
tar tzf myfiles.tar.gz
# 只是解压文件
gzip -d myfiles.tar.gz [#1]
bzip2 -d myfiles.tar.bz2 [#2]
xz -d myfiles.tar.xz [#3]
# 删除归档中的某个文件
tar --delete --file myfile.tar file4
# 更新归档中的某个文件
tar --update --file myfile.tar file5
# 增加文件到归档文件中
tar -rvf tecmint-14-09-12.tar xyz.txt
# 压缩归档文件
gzip myfiles.tar [ if you choose #1 above ]
bzip2 myfiles.tar [ if you choose #2 above ]
xz myfiles.tar [ if you choose #3 above ]
# 备份文件
# Create the tarball and compress it. Exclude files with the MPEG string in its file type.
tar X <(for i in $DIR/*; do file $i | grep -i mpeg; if [ $? -eq 0 ]; then echo $i; fi;done) -cjf backupfile.tar.bz2 $DIR/*
# 其中 X表示排除后面输入的文件中的列表。
# 解压并保持权限
tar xjf backupfile.tar.bz2 --directory user_restore --same-permissions
# 解压归档中的某一个文件
tar -xvf cleanfiles.sh.tar cleanfiles.sh
或者 tar --extract --file=cleanfiles.sh.tar cleanfiles.sh
# 解压归档中的某几个文件
tar -xvf tecmint-14-09-12.tar "file 1" "file 2"
# 解压归档中的一组文件
tar -xvf Phpfiles-org.tar --wildcards '*.php'
更多的例子查看18个tar例子。
2.find – linux中常用的文件查找工具
常用命令选项
-name 精确匹配名字,也可以使用通配符
-type 类型,后面跟 d,f等
-iname 忽略大小写
-maxdepth 最大深度
-size 文件大小
-user 属主
-perm 权限
-mtime 修改时间,以天为单位,如果要以分钟为单位使用-mmin
-print 打印到标准输出
-exec 执行命令,常用的是后面跟 rm '{}' \ 或者 -exec rm -f {} \
来看下几个不错的例子:
摘几个常用的例子:
# 最常见的查看文件名和类型
find /tmp -type f -name "a*.sh"
# 根据文件大小
find /tmp -type f -size +100k -name '*.sh'
find / -size +50M -size -100M
# 空目录
find /tmp -type d -empty
# 根据权限来查询
find . -type f -perm 0777 -print
# 将查找到的777权限的文件修改为644
find / -type f -perm 0777 -print -exec chmod 644 {} \;
find / -type d -perm 777 -print -exec chmod 755 {} \;
# 查找并删除一个文件
find . -type f -name "tecmint.txt" -exec rm -f {} \;
# 查看owner是root的文件
find / -user root -name tecmint.txt
# 查找50天以内修改的文件
find / -mtime 50
# 查找50-100天修改的文件
find / -mtime +50 –mtime -100
# 一个小时内修改的文件
find / -mmin -60