gpt4 book ai didi

linux - 如何打印文件名从...到

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:50:08 26 4
gpt4 key购买 nike

我必须打印文件列表中指定文件的内容,如下所示。开头文件名中的日期是可变的,“_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`

但是结果是一样的。

你能帮忙吗?

最佳答案

如果你想遍历给定的月份和日期,可以使用 {..} 语法。为什么?因为这种扩展甚至发生在变量被检查之前,所以没有变量可以存储在那里。

相反,使用 seq,它确实允许变量。

$ a=12
$ b=23
$ for i in $(seq $a $b); do echo "$i"; done
12
13
...
21
22
23

在这种情况下,你可能想说:

  • 获取$min_month$max_month
  • 获取$min_day$max_day

然后执行一个双循环:

for month in $(seq "$min_month" "$max_month");
do
for day in $(seq "$min_day""$max_day");
do
cat 2015-${month}-${day}_lol_lol.txt
done
done

关于linux - 如何打印文件名从...到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33918428/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com