使用变量作为路径删除旧文件

时间:2018-05-29 06:27:26

标签: bash shell

#!/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 

我想从特定路径中删除文件,路径将在单独的文件中定义。因此脚本编写如下所述,从文件中读取路径,但问题是脚本没有在文件中提取路径。可以帮助一些人。 文件名:pathfile /根/ ABC / DIR1 /根/ XYZ / DIR2 的/ etc /变种/ DIR3

1 个答案:

答案 0 :(得分:0)

假设我正确地遵循了这个,你有一个文件,在某些时候你分配给变量" 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"

如果我误解了你可能需要进一步解释?