2019-01-27 17:41:35 ITlanyue 阅读数 425
  • C语言嵌入式Linux编程第3期:程序的编译、链接和运行

    本课程为《C语言嵌入式Linux编程》第3期,主要对程序的编译、链接及运行机制进行分析。同时对静态库链接、动态链接的过程、插件原理、内核模块运行机进行探讨,后对嵌入式系统比较难理解的u-boot重定位、u-boot加载内核、内核解压缩、重定位过程进行分析,加深对程序的编译链接原理的理解。

    1125 人正在学习 去看看 王利涛

压缩当前目录的内容为xxx.zip文件

zip -r xxx.zip ./*

解压zip文件到当前目录

unzip xxx.zip

2018-07-30 10:32:00 weixin_30497527 阅读数 16
  • C语言嵌入式Linux编程第3期:程序的编译、链接和运行

    本课程为《C语言嵌入式Linux编程》第3期,主要对程序的编译、链接及运行机制进行分析。同时对静态库链接、动态链接的过程、插件原理、内核模块运行机进行探讨,后对嵌入式系统比较难理解的u-boot重定位、u-boot加载内核、内核解压缩、重定位过程进行分析,加深对程序的编译链接原理的理解。

    1125 人正在学习 去看看 王利涛

最近下载了Imagenet2012的数据文件,训练数据下有很多tar文件,这些tar文件都在一个目录内,所以想批量解压到该目录下每个单独的文件夹内

批量解压的步骤是,

1.列出所有的以tar为后缀的文件,

2.然后用字符串截取,去除.tar后缀,

3.然后mkdir创建新的文件夹,

4.之后用tar xvf解压到新创建的文件夹内

bash文件如下

1 for i in `ls *.tar`
2 do
3     mkdir ./${i%.tar}
4     tar xvf $i -C ./${i%.tar}
5     #echo ${i%.tar}
6 done

其中i%.tar命令用来进行字符串的截取

使用起来非常方便

转载于:https://www.cnblogs.com/yongjieShi/p/9389251.html

2012-04-14 17:09:52 lijun2087 阅读数 106
  • C语言嵌入式Linux编程第3期:程序的编译、链接和运行

    本课程为《C语言嵌入式Linux编程》第3期,主要对程序的编译、链接及运行机制进行分析。同时对静态库链接、动态链接的过程、插件原理、内核模块运行机进行探讨,后对嵌入式系统比较难理解的u-boot重定位、u-boot加载内核、内核解压缩、重定位过程进行分析,加深对程序的编译链接原理的理解。

    1125 人正在学习 去看看 王利涛

 

方法:
第一:
for tar in *.tar.gz;  do tar xvf $tar; done
for tar in *.tar.bz2; do tar xvf $tar; done

第二:用tar命令批量解压某个文件夹下所有的tar.gz文件
ls *.tar.gz | xargs -n1 tar xzvf

第三:find -maxdepth 1 -name "*.gz"|xargs -i tar xvzf {}
这条命令可解压当前目录下的所有gz文件
批量解压是比较郁闷的事,以前尝试各种方法,甚至用脚本循环语句解压都不行
现在发现这条命令可以搞定,maxdepth表示搜索深度,1代表只搜索当前目录

第四:for i in $(ls *.gz);do tar xvf $i;done

问题:
我想进行批量解压tar文件,使用tar -xvf *.tar会出错,提示“Not found in archive”。解决方法有很多,比如写一个脚本之类的。 请问为什么tar不支持这种通配符语法呢?是否有特殊的原因?我试过gzip就支gzip -d *.tar.gz。
回答:
通配符是shell解决的问题
tar -xvf *.tar
实际上执行tar时,tar接收到的是
tar -xvf a.tar b.tar c.tar ...
如果当前目录跟本没有tar的东西,那么tar就收到'*.tar'这个参数
与win不同,linux所有字符都可以作文件名,也即目录中不存在着 *.tar这个文件
为了防止 *.tar被shell解释为a.tar b.tar c.tar...
可以给它加个单引号

用tar解开一个Archive时,语法是
tar -xvf <tarfile.tar> <archived_file>
<tarfile.tar> 是选项f所要求的,只能是一个文件,比如myfiles.tar。
<archived_file> 是myfiles.tar所包含的归了档的文件中的一个或者多个成员文件。如果是多个,可以用通配符。
先别跟我急,我知道,这些你是清楚的。但是,你的问题是,用了
tar -xvf *.tar
如楼上所说,tar接收到的是
tar -xvf a.tar b.tar c.tar ...
tar把你的意图理解为,在a.tar里解出b.tar c.tar ...
2017-12-18 14:31:49 Hello_World_QWP 阅读数 3567
  • C语言嵌入式Linux编程第3期:程序的编译、链接和运行

    本课程为《C语言嵌入式Linux编程》第3期,主要对程序的编译、链接及运行机制进行分析。同时对静态库链接、动态链接的过程、插件原理、内核模块运行机进行探讨,后对嵌入式系统比较难理解的u-boot重定位、u-boot加载内核、内核解压缩、重定位过程进行分析,加深对程序的编译链接原理的理解。

    1125 人正在学习 去看看 王利涛



《 Linux下zip格式文件的解压缩与压缩操作命令详解 》


* 声明:网上找来比较凌乱,整理了一下,方便自己查看

zip格式文件的解压缩与压缩操作:


1、把/home目录下面的huazai目录压缩为huazai.zip 
zip -r huazai.zip huazai #压缩huazai目录 


2、把/home目录下面的huazai.zip解压到huazaibak目录里面 
unzip huazai.zip -d huazaibak


3、把/home目录下面的haoya文件夹和123.txt压缩成为haoya123.zip
zip -r haoya123.zip haoya 123.txt 


4、把/home目录下面的huazai.zip直接解压到/home目录里面 
unzip huazai.zip 


5、把/home目录下面的huazai01.zip、huazai02.zip、huazai03.zip同时解压到/home目录里面 
unzip huazai*.zip 


6、查看把/home目录下面的huazai.zip里面的内容 
unzip -v huazai.zip 


7、验证/home目录下面的huazai.zip是否完整 
unzip -t huazai.zip 


8、把/home目录下面huazai.zip里面的所有文件解压到第一级目录 
unzip -j huazai.zip



主要参数说明:


-c:将解压缩的结果 
-l:显示压缩文件内所包含的文件 
-p:与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换 
-t:检查压缩文件是否正确 
-u:与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其它文件解压缩到目录中 
-v:执行是时显示详细的信息 
-z:仅显示压缩文件的备注文字 
-a:对文本文件进行必要的字符转换 
-b:不要对文本文件进行字符转换 
-C:压缩文件中的文件名称区分大小写 
-j:不处理压缩文件中原有的目录路径 
-L:将压缩文件中的全部文件名改为小写 
-M:将输出结果送到more程序处理 
-n:解压缩时不要覆盖原有的文件 
-o:不必先询问用户,unzip执行后覆盖原有文件 
-P:使用zip的密码选项 
-q:执行时不显示任何信息 
-s:将文件名中的空白字符转换为底线字符 
-V:保留VMS的文件版本信息 
-X:解压缩时同时回存文件原来的UID/GID








2019-12-07 14:08:38 FZ_9426 阅读数 30
  • C语言嵌入式Linux编程第3期:程序的编译、链接和运行

    本课程为《C语言嵌入式Linux编程》第3期,主要对程序的编译、链接及运行机制进行分析。同时对静态库链接、动态链接的过程、插件原理、内核模块运行机进行探讨,后对嵌入式系统比较难理解的u-boot重定位、u-boot加载内核、内核解压缩、重定位过程进行分析,加深对程序的编译链接原理的理解。

    1125 人正在学习 去看看 王利涛

   最近因为要给第三方系统做中间件,需要对服务器中的N个ZIP文件做解压和重命名处理,因此费了一番功夫后,写出如下脚本,希望可以帮到那些同样由此需要的人!

  先说一下目录结构,在/home/test文件夹下有N个文件夹,例如2019.1 2019.2 2019.3 等等,同时在每个文件夹下有N个ZIP文件,例如

a.txt.zip   b.doc.zip  c.html.zip   d.pdf.zip等等.因为每个zip文件中存在的名称都是一样的且没有后缀,例如都是test.因此需要对解压后的文件进行重命名,否则都会变成一个文件,且覆盖.

   说完问题描述后,给大家看一下写的代码,在服务器上执行后,效果和预期的一样!

 

#!/bin/sh
#============ unzip the file ===========
Folder="/home/test"
for file in ${Folder}/*;
do
    file_name=`basename $file`
    cd ${Folder}/$file_name
    (
        for unzip in ${Folder}/$file_name/*.zip;
        do
                unzip_name=`basename $unzip`
                rname=${unzip_name:0:${#unzip_name}-4}
                unzip -o -O gbk  $unzip_name && mv `unzip -l $unzip_name | awk '{if(NR == 4){ print $4}}'` $rname
                # rm -f $unzip_name  是否删除
        done
    )
done

 最后真心希望能帮到那些需要的人,廷尉写这个东西,浪费了很多时间

 

没有更多推荐了,返回首页