【发布时间】:2015-11-25 13:59:05
【问题描述】:
我必须从下面的文件列表中打印指定文件的内容。起始文件名中的日期是可变的,“_lol_lol.txt”部分是常量。
ls
2015-01-03_lol_lol.txt
2015-01-24_lol_lol.txt
...
2015-10-23_lol_lol.txt
2015-10-24_lol_lol.txt
...
2015-11-14_lol_lol.txt
2015-11-15_lol_lol.txt
2015-11-16_lol_lol.txt
2015-11-17_lol_lol.txt
2015-11-18_lol_lol.txt
2015-11-19_lol_lol.txt
2015-11-20_lol_lol.txt
2015-11-21_lol_lol.txt
2015-11-22_lol_lol.txt
2015-11-23_lol_lol.txt
2015-11-24_lol_lol.txt
2015-11-25_lol_lol.txt
每个文件都包含一些数据,为了区分大小写:
cat 2015-01-03_lol_lol.txt
2015-01-03
cat 2015-01-24_lol_lol.txt
2015-01-24
...
cat 2015-10-23_lol_lol.txt
2015-10-23
cat 2015-10-24_lol_lol.txt
2015-10-24
...
cat 2015-11-14_lol_lol.txt
2015-11-14
cat 2015-11-15_lol_lol.txt
2015-11-15
...
cat 2015-11-25_lol_lol.txt
2015-11-25
我想从 fange "from" "to" 打印文件的内容,并且 "from" 和 "to" 都是可变的(由用户定义,取决于需要):
2015-11-15_lol_lol.txt
2015-11-16_lol_lol.txt
2015-11-17_lol_lol.txt
预期结果:
2015-11-15
2015-11-16
2015-11-17
但是当我使用命令时:
for i in {"2015-11-15".."2015-11-17"};do echo $i_lol_lol.txt ;done
Bash 返回:
{2015-11-15..2015-11-17}.txt
因为像@karoshi 一样,如果我使用“-”,整个表达式就像字符串一样被识别。
我试过了:
y1=2015;
y2=2015;
m1=11;
m2=11;
d=15
z=17
#for i in {${y1}..${y2}}; do
for j in {${m1}..${m2}}; do
for k in {${d1}..${d2}}; do
cat ${i}-${j}-${k}_lol_lol.txt
done
done
done`
但结果是相似的。
你能帮忙吗?
【问题讨论】:
-
您需要在这里支持什么样的范围?如果范围内的给定文件不存在怎么办?
-
如果你想打印内容文件,你可能想说
cat,而不是echo。 -
@fedorqui 你是对的。我想使用
cat而不是echo。 @Etan Reisner 范围是全年。