Is there a bash command for converting an entire directory to HAML from HTML?

后端 未结 3 530
我在风中等你
我在风中等你 2020-12-29 13:40

I\'m looking to convert an entire directory of HTML to HAML so that the files have the same name but with a new extension.

html2haml file.html.erb file.haml
         


        
相关标签:
3条回答
  • 2020-12-29 14:36

    You could do something like this:

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

    Edit: If you need to look for template files recursively and you're using bash 4.x, then you can use globstar:

    shopt -s globstar
    for f in **/*.html.erb; do html2haml $f ${f/\.html\.erb/.haml}; done
    
    0 讨论(0)
  • 2020-12-29 14:42

    It's not sexy but it's working:

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

    (Pay attention to the -e flag of html2haml it parses the ERb tags.)

    0 讨论(0)
  • 2020-12-29 14:47

    From https://gist.github.com/pho3nixf1re/1281382 looks like it does a whole directory tree:

    #!/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
    
    0 讨论(0)
提交回复
热议问题