给定文件路径如fiz.js
and dir/buz.js
,如何去掉后缀获得fiz dir/buz
?
我最好的镜头(我正在寻找更简单的东西):
查找 -name '*.js'| \ xargs -I{} 回声 {} | \ sed 's/.js$//' | \ xargs -I{} mv {}.js {}
给定文件路径如fiz.js
and dir/buz.js
,如何去掉后缀获得fiz dir/buz
?
我最好的镜头(我正在寻找更简单的东西):
查找 -name '*.js'| \ xargs -I{} 回声 {} | \ sed 's/.js$//' | \ xargs -I{} mv {}.js {}
您可以bash
通过使用 (版本 4)globstar
来获取递归文件列表。
$ shopt -s globstar
$ for i in **/*.js ; do echo "$i" "${i%.js}" ; done
对于 bash 手册页:
globstar
如果设置,路径名扩展上下文中使用的模式 ** 将匹配所有文件以及零个或多个目录和子目录。如果模式后跟 /,则只有目录和子目录匹配。
${x%ext}
从. ext
_ $x
有关更多信息,请参阅字符串操作。
echo "fiz.js"|awk -F. '{print $1}'
echo "dir/buz.js"|awk -F. '{print $1}'
find -name '*.js'| xargs -I file rename 's/\.js$//' file
它可以工作,如果你想覆盖现有文件,你必须添加一个 -f 来重命名(重命名 -f)。
这对我有用:rename ".js" "" *.js