今天茶杯君又双遇到写脚本的问题啦,没办法,小白一枚,什么东西都要学。
标签 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到指定目录