如何将find命令输出的YAML文件名拼接为指定格式字符串?
实现方法
以下几种方式可以将find命令的输出转换为你需要的格式:
方法1:利用find自带的printf参数
直接通过find的-printf选项格式化输出,这是最高效的方式:
find ./ -type f -name "*.yaml" -printf "-f %p "
如果在意末尾多余的空格,可以通过sed去除:
find ./ -type f -name "*.yaml" -printf "-f %p " | sed 's/ $//'
方法2:用awk处理输出
如果需要用awk实现,可以通过printf逐个拼接,再处理末尾空格:
find ./ -type f -name "*.yaml" | awk '{printf "-f %s ", $0}' | sed 's/ $//'
或者完全用awk内部处理,避免额外管道:
find ./ -type f -name "*.yaml" | awk '{arr[++n] = "-f " $0} END{for(i=1;i<=n;i++) printf "%s%s", arr[i], (i==n?"":" ")}'
方法3:Bash数组拼接
在Bash环境下,也可以把文件路径存入数组后循环拼接:
files=($(find ./ -type f -name "*.yaml")) output="" for file in "${files[@]}"; do output+="-f $file " done echo "${output% }"
内容的提问来源于stack exchange,提问作者DarkLeafyGreen
相关产品推荐
相关产品推荐

