请编写shell程序,对该目录下的所有日期里面的,以”.dat” 结尾的文件进行压缩
时间: 2024-02-13 11:06:00 浏览: 27
好的,下面是一个简单的shell脚本程序,可以实现对当前目录下所有日期文件夹中以“.dat”结尾的文件进行压缩:
```shell
#!/bin/bash
# 查找所有日期文件夹
for dir in $(ls -d */)
do
# 进入日期文件夹
cd $dir
# 查找所有以“.dat”结尾的文件
for file in $(ls *.dat 2>/dev/null)
do
# 压缩文件
gzip $file
done
# 返回上级目录
cd ..
done
```
使用方法:
1. 打开终端,切换到需要操作的目录下。
2. 将上述脚本代码复制到终端中。
3. 给脚本文件添加执行权限:`chmod +x script.sh`(其中,`script.sh`为脚本文件名)。
4. 运行脚本程序:`./script.sh`。
5. 执行完毕后,当前目录下所有日期文件夹中以“.dat”结尾的文件都将被压缩。
相关问题
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` 后缀。
AIX(unix)下,有一存放数据的目录,数据以日期为文件夹进行存放,如: 20120101 20120102 20120103 。。。 请编写shell程序,对该目录下的所有日期里面的,以”.dat” 结尾的文件进行压缩。(请务必把重点使用的方法写明)
好的,以下是一个在AIX(unix)下对该目录下所有日期里面的,以”.” 结尾的文件进行压缩的shell程序:
```bash
#!/bin/bash
# 存放数据的目录
datadir="/path/to/data"
# 遍历所有日期目录
for dir in "$datadir"/*/; do
# 判断是否是日期格式的目录
if [[ ! $dir =~ [0-9]{8}$ ]]; then
continue
fi
# 进入日期目录
cd "$dir"
# 遍历.dat文件并进行压缩
for file in *.dat; do
gzip "$file"
done
# 返回上层目录
cd ..
done
```
该程序首先指定存放数据的目录,然后使用一个循环遍历该目录下的所有日期目录。在每个日期目录中,使用一个循环遍历其中的.dat文件,并对每个文件进行压缩。在处理完当前日期目录后,程序会返回上层目录继续遍历下一个日期目录。这里使用了正则表达式来判断目录是否为日期格式的目录,以及使用cd命令进入和返回目录。
你可以将该程序保存为一个脚本文件,如compress_dat_files.sh,并在命令行中执行该脚本即可完成操作。