bash - 使用变量作为路径删除旧文件
问题描述
#!/bin/bash
START_TIME=$(date +%s)
timestamp=$(date +%Y%m%d_%H%M%S)
path=$pathfile
filename=logFile_$timestamp.txt
find $pathfile -name "*.txt" -type f -mtime +10 -print >> /root/$filename
echo "Backup:: Script Start -- $(date +%Y%m%d_%H%M)" >> /root/$filename
END_TIME=$(date +%s)
ELAPSED_TIME=$(expr $END_TIME - $START_TIME)
echo "Backup :: Script End -- $(date +%Y%m%d_%H%M)" >> /root/$filename
echo "Elapsed Time :: $(date -d 00:00:$ELAPSED_TIME +%Hh:%Mm:%Ss) ">> /root/$filename
我想从特定路径中删除文件,路径将在单独的文件中定义。因此,脚本的编写如下所述以从文件中读取路径,但问题是脚本没有获取文件中提到的路径。有人可以帮忙吗?文件名:路径文件 /root/abc/dir1 /root/xyz/dir2 /etc/var/dir3
解决方案
假设我正确地遵循了这一点,你有一个文件,在某些时候你分配给变量“pathfile”,它包含以下条目:
/root/abc/dir1
/root/xyz/dir2
/etc/var/dir3
假设上述情况属实, find 命令不会从文件中读取,因此您需要使用 while 循环从文件中读取,然后使用结果路径调用 find 命令:
while read -r path
do
find "$path" -name "*.txt" -type f -mtime +10 -print >> /root/$filename
echo "Backup:: Script Start -- $(date +%Y%m%d_%H%M)" >> /root/$filename
END_TIME=$(date +%s)
ELAPSED_TIME=$(expr $END_TIME - $START_TIME)
# Alternative -- (( ELAPSED_TIME = END_TIME - START_TIME ))
echo "Backup :: Script End -- $(date +%Y%m%d_%H%M)" >> /root/$filename
echo "Elapsed Time :: $(date -d 00:00:$ELAPSED_TIME +%Hh:%Mm:%Ss) ">> /root/$filename
done<"$pathfile"
如果我误解了你可能需要进一步解释?
推荐阅读
- json - 对模型进行序列化,使其对应一个json数据格式
- python - 如何在不中断的情况下修复填充DVWA浏览器的pytonos程序代码?
- wordpress - Wordpress - 用户登录或未登录时的菜单可见性错误
- python - 插入并返回 :array
- python - 将 `subprocess.run` 与包含空格的参数一起使用
- python - 无法在 Spyder/Anaconda 中安装 pandasql
- google-chrome - 无头 Chrome 命令行 - 设置超时
- ruby-on-rails - 为什么,在使用 Faker Gem 时会出现此错误?从以前的答案中,我了解到这与我的 database.yml 有关
- office-js - 如何在office js中添加多个选定的单元格注释?
- window-functions - 分区之间的 clickhouse 移动平均线