shell编程对于xx目录需要定时清空,但需要将被清理的文件的大小、创建时间、所有者、具体路径、权限等信息自动化写入到csv格式的文件中
时间: 2023-07-16 17:17:23 浏览: 39
可以使用如下的shell脚本实现:
```shell
#!/bin/bash
# 清空的目录
dir="/path/to/xx"
# csv文件名及路径
csv_file="/path/to/file.csv"
# 清空目录并将文件信息写入csv文件
find $dir -type f -delete -printf "%s,%TH:%TM %Tx,%u,%p,%m\n" >> $csv_file
```
解释一下:
1. `find $dir -type f`:查找 `$dir` 目录下的所有文件。
2. `-delete`:删除找到的文件。
3. `-printf "%s,%TH:%TM %Tx,%u,%p,%m\n"`:打印找到的文件的信息,包括文件大小、创建时间、所有者、路径、权限等,使用逗号分隔,并以换行符结尾。
4. `>> $csv_file`:将打印出的信息追加到 `$csv_file` 文件中。
可以将脚本加入定时任务中,定期执行清空并写入csv文件的操作。
相关问题
用shell编程,对于xx目录需要定时清空,但需要将被清理的文件的大小、创建时间、所有者、具体路径、权限等信息自动化写入到csv格式的文件中
可以使用以下脚本实现:
```shell
#!/bin/bash
# 目录路径
dir_path="/path/to/xx"
# csv 文件路径
csv_path="/path/to/file.csv"
# 获取当前时间
current_time=$(date +"%Y-%m-%d %T")
# 清空目录
find "${dir_path}" -type f -delete
# 生成 csv 文件头部
echo "文件大小,创建时间,所有者,具体路径,权限" > "${csv_path}"
# 遍历目录下的文件
find "${dir_path}" -type f | while read file; do
# 获取文件信息
file_size=$(du -h "${file}" | awk '{print $1}')
create_time=$(stat -c "%y" "${file}")
owner=$(stat -c "%U" "${file}")
file_path=$(realpath "${file}")
permission=$(stat -c "%a" "${file}")
# 将文件信息写入 csv 文件
echo "${file_size},${create_time},${owner},${file_path},${permission}" >> "${csv_path}"
done
# 输出完成信息
echo "清空 ${dir_path} 目录并将文件信息写入 ${csv_path} 文件完成,时间:${current_time}"
```
该脚本会首先清空指定目录下的所有文件,然后遍历目录下的所有文件,获取文件的大小、创建时间、所有者、具体路径、权限等信息,并将这些信息写入到指定的 csv 文件中。最后输出完成信息,包括清空目录和将文件信息写入 csv 文件的时间。
注意,脚本中需要替换 `dir_path` 和 `csv_path` 的值为实际路径。另外,执行该脚本需要具有清空目录和读取文件信息的权限。
对于xx目录需要定时清空,但需要将被清理的文件的大小、创建时间、所有者、具体路径、权限等信息自动化写入到csv格式的文件中,shell编程
可以使用以下脚本实现:
```bash
#!/bin/bash
# 定义需要清空的目录
DIR="/path/to/directory"
# 定义csv文件路径
CSV_FILE="/path/to/csv/file.csv"
# 清空目录并将信息写入csv文件
find $DIR -type f -print0 | while read -d '' -r file; do
# 获取文件信息
size=$(wc -c < "$file")
ctime=$(stat -c %y "$file")
owner=$(stat -c %U "$file")
path=$(realpath "$file")
perm=$(stat -c %a "$file")
# 删除文件
rm "$file"
# 写入csv文件
echo "$size,$ctime,$owner,$path,$perm" >> "$CSV_FILE"
done
```
脚本的具体实现思路如下:
1. 定义需要清空的目录和csv文件路径;
2. 使用 `find` 命令查找目录下的所有文件,并逐个处理;
3. 对于每个文件,使用 `wc -c` 命令获取文件大小,使用 `stat -c %y` 命令获取文件创建时间,使用 `stat -c %U` 命令获取文件所有者,使用 `realpath` 命令获取文件的绝对路径,使用 `stat -c %a` 命令获取文件权限;
4. 将获取的信息写入csv文件中;
5. 删除文件。
注意:在脚本中使用了 `print0` 和 `read -d ''` 选项,这是为了处理文件名中可能包含空格等特殊字符的情况。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)