首页 > 解决方案 > 如何在 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

我不知道为什么它不能在容器中工作。任何人都可以指出。

谢谢,

标签: unixcontainerslsbusyboxbasename

解决方案


作为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

推荐阅读