linux列目录 解压命令 命令参数列表过长 批量修改文件名 删除文件大小为0文件
(2011-07-08 17:50:13)
在windows里列出当前路径下所有的目录用dir -ad就可以了,在linux里用ls有点小麻烦,需要这样写:
1. ls -d */
Note: 目录名原本就是'/'后缀的,只是现在一般ls出来都被剪掉了
2. ls -l | grep ^d
linux解压命令集
.tar
解包: tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)
.gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
.tar.gz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
.bz2
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName
.tar.bz2
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName
.bz
解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz
压缩:未知
.tar.bz
解压:tar jxvf FileName.tar.bz
压缩:未知
.Z
解压:uncompress FileName.Z
压缩:compress FileName
.tar.Z
解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName
.tgz
解压:tar zxvf FileName.tgz
压缩:未知
.tar.tgz
解压:tar zxvf FileName.tar.tgz
压缩:tar zcvf FileName.tar.tgz FileName
.zip
解压:unzip FileName.zip
压缩:zip FileName.zip DirName
.rar
解压:rar a FileName.rar
压缩:rar e FileName.rar
rar请到: http://www.rarsoft.com/download.htm 下载!
解压后将rar_static拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以)
.lha
解压:lha -e FileName.lha
压缩:lha -a FileName.lha FileName
lha请到: http://www.infor.kanazawa-it.ac.jp/…/lhaunix/ 下载!
解压后请将lha拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以)
.rpm
解包:rpm2cpio FileName.rpm | cpio -div
.tar .tgz .tar.gz .tar.Z .tar.bz .tar.bz2 .zip .cpio .rpm .deb .slp
.arj .rar .ace .lha .lzh
.lzx .lzs .arc .sda .sfx .lnx .zoo .cab .kar .cpt .pit .sit
.sea
解压:sEx x FileName.*
压缩:sEx a FileName.* FileName
sEx只是调用相关程序,本身并无压缩、解压功能,请注意!
sEx请到: http://sourceforge.net/projects/sex下载!
解压后请将sEx拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以)
1、在一个目录下删除大批量的文件时,当使用 rm -rf 或者rm *会提示参数列表过长
通过修改命令为 :find . -name "*" | xargs rm -rf '*',成功删除
2、需要把一个目录下的所有文件mv到另外一个目录,如果当前目录文件特别多,简单使用mv 源目录 目的目录会提示参数列表过长
通过修改命令为 :ls | xargs -t -I {} mv {} ../matchres/ 可以把当前目录下的所有文件移到
"../matchres"下
grep ZCZC *2015060900* |awk -F':' '{print $1}'|xargs -i{} cp
-rf {} /home/chnjh/ /
3、另外cp 命令也会存在这种情况,解决办法跟 mv的一样。
批量修改文件名
方法1:把文件名拆分处理,可以任意修改文件名
find -name '*.log' -printf %f\\n|awk -F'.' '{print $1}'|xargs -i{}
mv {}.log xiyun_{}.log
方法2:利用rename
一般的linux下的rename命令比较简单
rename 'test' 'xiyun' '*.log'
把文件名中的某部分字符串替换掉
ubuntu下的rename命令支持正则表达式,因此功能更强大。
方法3:直接利用find和xargs和mv,中间不用awk,这样只能添加后缀名,不能修改文件名。
总结,方法一扩展性最强,也体现了编程实现的思想,如果再复杂一些,可以编程处理。
批量修改文件名:
find -name '*.grd.1' -printf %f\\n|awk -F'.grd' '{print $1}'|xargs
-i{} mv {}.grd.1 {}.grd
在当前目录以及子目录开始,寻找大小是0字节的文件,然后删掉。
find ./ -size 0 -exec rm {} \;
ls可以按照文件大小进行输出排序,这是一个很实用的参数。
man ls
-S sort by file size
由大到小排序ls -Sl
从小到大排序ls -Slr
-h,表示”–human-readable”,单位是k或者M ,比较容易看清楚结果。
显示子目录结构ls -R
附:
ls按时间排序
ls -lt 从新到旧
ls -lrt 从旧到新
ls对当前目录和文件大小排序
du -s * | sort -nr
只对当前目录排序,并用直观的大小显示出来
for i in $(ls -l |grep '^d' |du -s * |sort -nr|awk '{print $2}');do
du -sh $i;done
分享:
喜欢
0
赠金笔
加载中,请稍候......