bash - For 循环仅遍历那些可用的文件
问题描述
假设我有 2020 年 1 月和 2019 年全年的月度数据文件,我想遍历所有可用月份以执行一些操作。这是我最接近的尝试
for month in {01..12}; do
for year in 2019 2020; do
cat this_file-${year}-${month} | grep this_word -i
done
done
它的工作原理是我可以看到 13 个月的输出,但随后也会在 2020 年的所有月份中返回“没有这样的文件或目录”,但 Jan 除外(因为这是我在 2020 年拥有数据文件的唯一月份),这使得直接从终端复制输出变得很痛苦。任何指针?
因为我在 shell 上运行我的命令,所以单行解决方案将是完美的。
解决方案
使用大括号扩展,您可以执行以下操作:
grep -i 'this_word' file-{2019..2020}-{01..12} 2>/dev/null
通过将 stderr 重定向到/dev/null
.
推荐阅读
- r - 将数据框 Group BY 代码放入 R 中的函数中
- virtualbox - VirtualBox 6.1 在运行几分钟后自动重启我的主机
- redis - Vertx 4 - Redis 6 问题
- javascript - 当用户单击另一个链接(如分步菜单)时,如何添加另一个检查类以替换当前活动类?
- javascript - 我想检索反应表排序的数据并将其传递给后端是否可能。因为我是新手,所以我想知道我们该怎么做
- spring-boot - 将 json 有效负载发布到 rest api 时管道损坏(写入失败)
- amazon-web-services - AWS SecretsManager 按标签过滤?
- excel - 彩色条形图;不确定我是否收集了正确的范围?
- angular - 如何从 Angular JS 应用程序调用 CefSharp.PostMessage()
- json - 在 JSON 突出显示中创建链接