3

给定文件路径如fiz.jsand dir/buz.js,如何去掉后缀获得fiz dir/buz

我最好的镜头(我正在寻找更简单的东西):

查找 -name '*.js'| \
 xargs -I{} 回声 {} | \
 sed 's/.js$//' | \
 xargs -I{} mv {}.js {}
4

4 回答 4

2

您可以bash通过使用 (版本 4)globstar来获取递归文件列表。

$ shopt -s globstar
$ for i in **/*.js ; do echo "$i" "${i%.js}" ; done

对于 bash 手册页:

globstar

如果设置,路径名扩展上下文中使用的模式 ** 将匹配所有文件以及零个或多个目录和子目录。如果模式后跟 /,则只有目录和子目录匹配。

${x%ext}从. ext_ $x有关更多信息,请参阅字符串操作

于 2012-09-01T10:05:05.210 回答
0
echo "fiz.js"|awk -F. '{print $1}'

echo "dir/buz.js"|awk -F. '{print $1}'
于 2012-09-01T14:55:56.130 回答
0
find -name '*.js'|  xargs -I file rename 's/\.js$//' file

它可以工作,如果你想覆盖现有文件,你必须添加一个 -f 来重命名(重命名 -f)。

于 2013-03-13T08:23:32.983 回答
0

这对我有用:rename ".js" "" *.js

于 2016-03-21T17:58:09.030 回答