![bash 脚本根据当前日期和文件名模式识别文件](https://linux22.com/image/101775/bash%20%E8%84%9A%E6%9C%AC%E6%A0%B9%E6%8D%AE%E5%BD%93%E5%89%8D%E6%97%A5%E6%9C%9F%E5%92%8C%E6%96%87%E4%BB%B6%E5%90%8D%E6%A8%A1%E5%BC%8F%E8%AF%86%E5%88%AB%E6%96%87%E4%BB%B6.png)
bash 脚本根据当前日期和文件名模式识别文件。
有 10 个文件位于不同的目录中,其中包含日期模式。我需要一一挑选这些文件并将其发送到远程站点。
我想列出文件命名模式、配置文件中的位置并从脚本中进行选择,但没有任何运气。有人帮忙
示例文件名模式和位置。
/documents/accounts/abc_yyyy-mm-dd.txt
/文档/名单/def_yyyy-mm-dd-txt
/文档/newcustomer/ghijkl_yyyy-mm-dd-txt
date=`date +%Y-%m-%d`;
config_file="/scripts/config/abc.cfg";
echo $config_file;
URL="http://localhost:9200/document-$date";
while read var value
do
"$var"= curl -XPUT 'http://localhost:9200/documents-'$date'/document/
done < /path/to/abc.config
每天挑选这些文件,并在所有文件可用后每天使用curl 将其发送到远程站点。
答案1
我创建了这个文件
[leonardo4it@box4it tst] $ ll -R /home/leonardo4it/tst/*
/home/leonardo4it/tst/abc:
total 0
-rw-rw-r-- 1 leonardo4it leonardo4it 0 Dec 28 14:04 abc_2016-12-28.txt
-rw-rw-r-- 1 leonardo4it leonardo4it 0 Dec 28 14:34 excluded.txt
/home/leonardo4it/tst/shhh:
total 0
-rw-rw-r-- 1 leonardo4it leonardo4it 0 Dec 28 14:06 hbcinema_2016-12-28.txt
/home/leonardo4it/tst/u111:
total 0
-rw-rw-r-- 1 leonardo4it leonardo4it 0 Dec 28 14:06 uu_2016-12-28.txt
一旦构建了当日使用的日期寻找像上面一样。我得到这个清单
[leonardo4it@box4it tst] $ export dat_day=(`date +%Y-%m-%d`)
[leonardo4it@box4it tst] $ echo $dat_day
2016-12-28
[leonardo4it@box4it tst] $ find /home/leonardo4it/tst/ -type f -name "*$dat_day.txt"
/home/leonardo4it/tst/abc/abc_2016-12-28.txt
/home/leonardo4it/tst/shhh/hbcinema_2016-12-28.txt
/home/leonardo4it/tst/u111/uu_2016-12-28.txt
答案2
#!/bin/bash
date=$(date +%Y-%m-%d)
find /documents/ -type f -name "*${date}.txt" | while read filename
do
echo "filename : ${filename}"
# put your transfer logic here...
done