Shell 使用uglifycss生成输出文件时更改文件扩展名
我正在使用uglifycss npm包缩小项目输出目录中的所有CSS文件。我正在执行以下生成后脚本,通过添加Shell 使用uglifycss生成输出文件时更改文件扩展名,shell,find,uglifycss,Shell,Find,Uglifycss,我正在使用uglifycss npm包缩小项目输出目录中的所有CSS文件。我正在执行以下生成后脚本,通过添加*.min.CSS find dist/assets/css/ -type f -name "*.css" -exec uglifycss --output {}.min.css {} \; -exec rm {} \; 执行脚本之前的文件: 执行脚本后的文件: 我想从完整文件名路径中删除现有的.css,并向其追加.min.css。我尝试了几种解决方案,但未能达到
*.min.CSS
find dist/assets/css/ -type f -name "*.css" -exec uglifycss --output {}.min.css {} \; -exec rm {} \;
执行脚本之前的文件:
执行脚本后的文件:
我想从完整文件名路径中删除现有的.css
,并向其追加.min.css
。我尝试了几种解决方案,但未能达到预期效果。我已经看过文件了,但什么也找不到。有什么方法可以从{}文件路径修剪扩展名吗?找到答案并将其转换为您的需要,如下所示
find dist/assets/css/ -type f -name "*.css" -exec bash -c 'name="{}"; uglifycss --output "${name//css/min.css}" "$name"' \; -exec rm {} \;
找到答案并将其转化为您的需求
find dist/assets/css/ -type f -name "*.css" -exec bash -c 'name="{}"; uglifycss --output "${name//css/min.css}" "$name"' \; -exec rm {} \;
问题在于
-exec
,将{}
替换为完整的文件名,并且无法直接从{}
中删除扩展名。一种方法是使用shell操作
find dist/assets/css/ -type f -name "*.css" -exec sh -c '
for file ; do
uglifycss --output "${file%.css}.min.css" "$file"
rm -- "$file"
done
' _ {} +
诀窍在于参数扩展
${file%.css}.min.css
,扩展名.css
被删除,部分.min.css
被添加回来。问题在于-exec
,{/code>被替换为完整的文件名,没有直接的方法从{
。一种方法是使用shell操作
find dist/assets/css/ -type f -name "*.css" -exec sh -c '
for file ; do
uglifycss --output "${file%.css}.min.css" "$file"
rm -- "$file"
done
' _ {} +
诀窍在于参数扩展${file%.css}.min.css
,扩展名.css
被删除,部分.min.css
被添加回来。这会为找到的.css文件的每一次出现生成一个bash shell,如果文件名为例如cssmain.css
这会为找到的.css文件的每一次出现生成一个bash shell,并且可能会执行以下操作:如果文件名用于例如cssmain.css