5. SHELL程序编写(1小题,合计12分) AIX(unix)下,有一存放数据的目录,数据以日期为文件夹进行存放,如: 20120101 20120102 20120103 。。。 请编写shell程序,对该目录下的所有日期里面的,以”.dat” 结尾的文件进行压缩。(请务必把重点使用的方法写明)
时间: 2023-04-04 21:00:41 浏览: 115
可以使用find命令来查找所有以.dat结尾的文件,然后使用tar命令进行压缩。具体的shell程序如下:
```shell
#!/bin/bash
find /path/to/data -name "*.dat" -type f -exec tar -czvf {}.tar.gz {} \;
```
其中,/path/to/data是存放数据的目录的路径。-name选项指定了要查找的文件名模式,这里是以.dat结尾的文件。-type选项指定了要查找的文件类型,这里是普通文件。-exec选项指定了要执行的命令,{}表示查找到的文件名,\;表示命令结束。tar命令用于将文件压缩成tar.gz格式的压缩包。
相关问题
AIX(unix)下,有一存放数据的目录,数据以日期为文件夹进行存放,如: 20120101 20120102 20120103 。。。 请编写shell程序,对该目录下的所有日期里面的,以”.dat” 结尾的文件进行压缩。
可以使用以下的shell脚本实现:
```bash
#!/bin/bash
dir="/path/to/data/directory"
for date_dir in $(ls $dir); do
if [ -d "${dir}/${date_dir}" ]; then
cd "${dir}/${date_dir}"
tar -czvf "${date_dir}.tar.gz" *.dat
fi
done
```
解释:
- `dir` 变量存储了数据目录的路径。
- `for date_dir in $(ls $dir)` 循环遍历数据目录下的所有日期文件夹。
- `if [ -d "${dir}/${date_dir}" ]` 判断当前遍历到的文件是否是一个目录。
- `cd "${dir}/${date_dir}"` 进入日期文件夹。
- `tar -czvf "${date_dir}.tar.gz" *.dat` 压缩日期文件夹下所有以 `.dat` 结尾的文件,压缩后的文件名为该日期文件夹的名称加上 `.tar.gz` 后缀。
编写程序test21.sh,shell 从键盘输入一组整数,以-1结束。输出该批数据中最大值和
编写test21.sh程序如下:
```shell
#!/bin/bash
echo "请输入一组整数,以-1结束:"
# 读取用户输入的整数
read num
max=$num
sum=0
# 判断输入的数是否为-1,如果不是-1则继续输入
while [ $num -ne -1 ]
do
if [ $num -gt $max ]; then
max=$num
fi
sum=$((sum+num))
read num
done
# 输出最大值和总和
echo "输入的整数中最大值为:$max"
echo "输入的整数的总和为:$sum"
```
用户运行程序后,可以输入一组整数,以-1结束。程序会输出该批数据中的最大值和总和。例如,用户输入5 8 3 10 -1,输出结果为最大值为10,总和为26。