所以我想在我的Mac上做一个Shell脚本(.sh),但是我很难...... 因此,对于每个文件,我想复制它并将其转换为另一种类型(.less to .css)。我知道该怎么做了:
lessc fileToConvert.less destinationOfConvertedFile.css
现在我的问题是将它集成到循环中(循环文件夹的所有文件)。我试过了,但似乎没有任何效果:
alias proj="cd /Users/maxwell/Documents/WebStorm"
for /D /r %%G in * DO Echo We found %%G
我试过这个测试,但即使这样也行不通。有什么想法吗?
答案 0 :(得分:5)
将find
命令与-exec
开关一起使用或将find
的输出管道传输到xargs
。
例如:
find . -name "*.less" -exec sh -c 'lessc "{}" "$(basename "{}" .less).css"' \;
这将从当前目录以递归方式查找任何带* .less扩展名的文件,并使用filename作为lessc
的参数。输出文件名将与输入文件名相同,但扩展名不同。
请注意,我的系统上没有安装lessc
,所以我无法测试这个确切的示例,但它应该是正确的,或者非常接近。
答案 1 :(得分:4)
这里我创建了一个名为test的子文件夹。里面是我所有的* .less文件。运行后,它会输出带有相应名称的.css文件。您可以轻松修改路径以适合您的文件夹结构。
#!/bin/bash
FILES=./test/*.less
for f in $FILES
do
echo "$f"
FULL_FILENAME=$f
FILENAME=${FULL_FILENAME##*/}
echo ${FILENAME%%.*}
DIR=${PWD##*/}
lessc $f ./test/${FILENAME%%.*}.css
done
如果您需要在1-liner中为.bash_profile中的此脚本创建别名,那么您可以从任何地方调用它。
编辑:这有助于确定bash循环http://www.cyberciti.biz/faq/bash-loop-over-file/
干杯