You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过管道命令按文件名排序Shell脚本输出的Markdown图片链接

按文件名排序生成Markdown图片链接

原脚本功能是遍历$blocks目录下的PNG图片,生成格式为![name_of_the_image](full_path_to_the_image)的Markdown图片链接,每个链接间空一行并写入output文件。要实现按文件名字母顺序排序输出,可通过管道将printf的输出传递给sort命令处理,具体修改如下:

修改后的脚本

for f in "$blocks"/*.png; do
    img_name=$(basename "${f}")
    img_name="${img_name/.png/}"
    # 先输出文件名作为排序键,再输出Markdown内容,用制表符分隔
    printf "%s\t!["$img_name"](%s)\n\n" "$img_name" "$f"
done | sort -k1,1 | cut -f2- > output

说明

  1. 添加排序键:在printf中先输出去掉.png的文件名(作为排序依据),用制表符\t和后续的Markdown内容分隔,确保排序时能精准按文件名排序。
  2. 管道排序:将所有输出通过管道传给sort -k1,1,指定按第一列(即文件名)进行字母排序。
  3. 去除排序键:用cut -f2-去掉输出中的第一列(排序键),只保留最终的Markdown图片链接内容,写入output文件。

如果希望直接按文件路径的字母顺序排序(效果和按文件名排序一致),也可以先对遍历的文件列表排序再生成链接,脚本如下:

# 先对PNG文件路径排序,再遍历生成链接
printf "%s\n" "$blocks"/*.png | sort | while read -r f; do
    img_name=$(basename "${f}")
    img_name="${img_name/.png/}"
    printf "!["$img_name"](%s)\n\n" "$f"
done > output

内容的提问来源于stack exchange,提问作者James Starlight

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 11:00:09