茶杯君 -- BASH 脚本如何遍历文件夹来解压缩文件,解压缩文件的脚本拟写。

今天茶杯君又双遇到写脚本的问题啦,没办法,小白一枚,什么东西都要学。
标签 bash的学习 bash_shell bash for语句 bash if语句

今天的问题,在linux环境下,拟写一个脚本,遍历所有的一级子目录文件夹,把文件夹中的.tar.gz文件全部解压出来。

#!/bin/bash
dir="/hdd/prj/central_library/tsmc12/mem/test"
i=1                                                                                                                                                                                          
for tmp_file in `ls ${dir}`
do 
	echo " No = $i tmp_file = $tmp_file"
	if [ "$i" = $i ]
	then
		for tmp_tar_file in `ls $dir/$tmp_file/`
		do
			if [ "$tmp_tar_file" = "${tmp_file}_doc.tar.gz" ]
			then
        	echo "ok"
			else
			tar -xzf $dir/$tmp_file/$tmp_tar_file -C $dir/$tmp_file
			fi
		done
	fi
i=`expr $i + 1`
done

解决方案如上所示,大神自己看
下面是小白科普时间,
Q1如何遍历1级文件夹目录
需要用到如下指令

dir="/hdd/prj/central_library/tsmc12/mem/test"
for tmp_file in `ls ${dir}`
do
done

这个是bash中的for语句,指在dir文件夹中遍历一级目录。
Q2 如何将指定目录的指定压缩文件解压缩到指定目录中去。

tar -xzf $dir/$tmp_file/$tmp_tar_file -C $dir/$tmp_file

这个命令即可

然后下面我们将内部的tar.gz文件解压到它当前的目录中去,需要注意的是,我这里遇到一个问题,*doc.tar.gz文件由于损害而无法解压,所以这里将所有的这种文件给排除出去。

#!/bin/bash
dir="/hdd/prj/central_library/tsmc12/mem/test"

i=1

for tmp_file in `ls ${dir}`
do
echo " No = $i tmp_file = $tmp_file"
tar -xzf $dir/$tmp_file/TSMCHOME/sram/Compiler/$tmp_file/*.tar.gz -C $dir/$tmp_file/TSMCHOME/sram/Compiler/$tmp_file
i=`expr $i + 1`
done

下面的代码是把文件copy到指定目录中去

#!/bin/bash
dir="/hdd/prj/central_library/tsmc12/mem/test"

#target_dir="/hdd/prj/central_library/tsmc12/mem/Compiler"
target_dir="/hdd/prj/central_library/tsmc12/mem/release_note"
i=1
for tmp_file in `ls ${dir}`
do
echo " No = $i tmp_file = $tmp_file"
#cp $dir/$tmp_file/TSMCHOME/sram/Compiler/$tmp_file/*.pl $target_dir/ -rf
#cp $dir/$tmp_file/TSMCHOME/sram/Compiler/$tmp_file/*.mco $target_dir/ -rf
cp $dir/$tmp_file/TSMCHOME/sram/Documentation/release_note/*.pdf $target_dir/ -rf
#TSMCHOME/sram/Documentation/release_note
i=`expr $i + 1`
done

关于计算
1整数用如下方法计算

i=`expr $i + 1`

2小数用如下方法计算。

s2=$(echo "scale=3; 6 / 5"  | bc)
echo $s2

附录
1 链接: Linux Bash Shell入门教程.

2 链接: Linux下Shell的for循环语句.

新问题
bash脚本将所需的文件ln到指定目录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值