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

如何用单行Bash代码生成静态站点的站点地图?

生成符合要求的URL列表与XML站点地图

一、生成TXT格式的URL列表

直接用find配合sed就能完成路径转换,执行以下命令即可得到目标TXT文件:

find ./pages -name '*.js' | sed -E 's|^\./pages/||; s|/index\.js$||; s|\.js$||; s|^|https://www.example.com|' > sitemap.txt

各部分处理逻辑:

  • s|^\./pages/||:移除路径开头的./pages/前缀
  • s|/index\.js$||:将结尾的/index.js替换为空(比如/pages/about/index.js转为about)
  • s|\.js$||:去掉所有文件的.js后缀(比如/pages/about/team.js转为about/team)
  • s|^|https://www.example.com|:在每行开头添加网站域名前缀

二、生成带最后修改日期的XML站点地图

用bash循环结合date和文本处理,生成符合sitemap规范的XML文件,执行以下脚本:

#!/bin/bash
# 写入XML头部
echo '<?xml version="1.0" encoding="UTF-8"?>' > sitemap.xml
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' >> sitemap.xml

# 遍历所有pages下的js文件
find ./pages -name '*.js' | while read -r file; do
  # 处理URL路径
  url=$(echo "$file" | sed -E 's|^\./pages/||; s|/index\.js$||; s|\.js$||')
  # 处理根目录的index.js,转为首页URL
  if [ -z "$url" ]; then
    full_url="https://www.example.com"
  else
    full_url="https://www.example.com/$url"
  fi
  
  # 获取文件最后修改日期
  lastmod=$(date -r "$file" +"%Y-%m-%d")
  
  # 写入单个URL节点
  echo "  <url>" >> sitemap.xml
  echo "    <loc>$full_url</loc>" >> sitemap.xml
  echo "    <lastmod>$lastmod</lastmod>" >> sitemap.xml
  echo "  </url>" >> sitemap.xml
done

# 闭合XML根标签
echo '</urlset>' >> sitemap.xml

执行后会生成sitemap.xml,完全符合你需要的格式,每个URL节点都会包含对应的最后修改日期。

内容的提问来源于stack exchange,提问作者Costa Michailidis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 01:17:38