unix - 如何在 linux docker 容器中使用文件名模式获取多个文件的基本名称
问题描述
我的容器文件夹中的目录中有多个具有相同名称模式的文件:
/report/tsl_report_20210604.csv
/report/tsl_report_20210604.zip
我正在尝试列出并获取基本名称。所以输出应该是这样的:
tsl_report_20210604.csv
tsl_report_20210604.zip
我正在使用命令ls report/tsl_report_* | xargs basename -a 2>&1
,它在我的本地 Mac 机器上运行良好,但是在容器中运行相同的命令时,我得到以下 o/p:
BusyBox v1.25.1 (2018-05-30 19:58:18 GMT) multi-call binary.
Usage: basename FILE [SUFFIX]
Strip directory path and .SUFFIX from FILE
我不知道为什么它不能在容器中工作。任何人都可以指出。
谢谢,
解决方案
作为busybox的一部分的basename的精简版本,您可以通过以下方式实现相同的结果:
选项1:
ls report/tsl_report_* | xargs -n1 basename
选项 2:
$ for x in report/tsl_report_*; do basename $x ;done
tsl_report_20210604.csv
tsl_report_20210604.zip
选项 3:
find ./report/ -name 'tsl_report_*' | xargs -n1 basename
推荐阅读
- javascript - AWS Lambda 节点处理问题
- android - 离子/角度引导两次,在 debug.apk 中有效,但在发布时无效
- apache-spark - 如何读取 spark sql 查询执行计划并将其保存到文本文件中?
- angular - 传递数据以形成控制角度
- dart - 如何检查对象是否包含飞镖中的属性
- vue.js - 每次从组件调用时,Vuex 操作都不会更新状态
- php - 我收到 Laravel Mysql 连接错误
- python - requests-html:按内容查找 td
- python - Python:使用 Numba 切片 2d NumPy 数组以生成 C 阶数组
- java - 如何在android java中使用应用程序覆盖屏幕截取其他应用程序