【问题标题】:Is there a bash command for converting an entire directory to HAML from HTML?是否有用于将整个目录从 HTML 转换为 HAML 的 bash 命令?
【发布时间】:2012-02-22 16:25:18
【问题描述】:

我希望将整个 HTML 目录转换为 HAML,以便文件具有相同的名称但具有新的扩展名。

html2haml file.html.erb file.haml

我可以运行一个循环,以便我可以一次转换所有这些文件,以便名称相同,只是更改了扩展名?

我的文件:

continue_login.html.erb
expired_trial.html.erb
expired_trial.mobile.erb
login.html.erb
login.mobile.erb
recover_password.html.erb
signup.html.erb
trial_expires_soon.html.erb
trial_expires_soon.mobile.erb

【问题讨论】:

    标签: ruby-on-rails bash haml html2haml


    【解决方案1】:

    这并不性感,但很有效:

    for file in $(find . -type f -name \*.html.erb); do
      html2haml -e ${file} "$(dirname ${file})/$(basename ${file} .erb).haml";
    done
    

    (注意html2haml-e标志,它会解析ERb标签。)

    【讨论】:

    • 把这个扔进去 for f in *.html.erb; do rm $f; done 你可以清理旧的 *.html.erb 文件
    • 只是添加,反引号fork一个新进程,所以最好使用$(...)
    • $(...) 是什么意思?
    • tadman:将第一个(左侧)反引号替换为 $(,将第二个(右侧)反引号替换为 )
    【解决方案2】:

    你可以这样做:

    for f in *.html.erb; do html2haml $f ${f/\.html\.erb/.haml}; done
    

    编辑:如果您需要递归查找模板文件并且您使用的是bash 4.x,那么您可以使用globstar

    shopt -s globstar
    for f in **/*.html.erb; do html2haml $f ${f/\.html\.erb/.haml}; done
    

    【讨论】:

      【解决方案3】:

      来自https://gist.github.com/pho3nixf1re/1281382 看起来像是一整棵目录树:

      #!/bin/bash
      if [ -z "$1" ]; then
        wdir="."
      else
        wdir=$1
      fi
      
      for f in $( find . -name '*.erb' ); do
        out="${f%.erb}.haml"
        if [ -e $out ]; then
          echo "skipping $out; already exists"
          # rm $f
        else
          echo "hamlifying $f"
          html2haml $f > $out
          # rm $f
        fi
      done
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-14
        • 1970-01-01
        • 2010-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多