指定fiz.js
和dir/buz.js
等文件路径,如何删除后缀以获取fiz dir/buz
?
我最好的镜头(我正在寻找更简单的东西):
find -name '*.js'| \ xargs -I{} echo {} | \ sed 's/.js$//' | \ xargs -I{} mv {}.js {}
答案 0 :(得分:2)
您只需bash
(版本4)即可使用globstar
获取递归文件列表。
$ shopt -s globstar
$ for i in **/*.js ; do echo "$i" "${i%.js}" ; done
对于bash手册页:
globstar
如果设置,路径名扩展上下文中使用的模式**将匹配所有文件以及零个或多个目录和子目录。如果模式后跟一个/,则只有目录和子目录匹配。
${x%ext}
从ext
的末尾删除$x
。有关详情,请参阅String manipulations。
答案 1 :(得分:0)
echo "fiz.js"|awk -F. '{print $1}'
echo "dir/buz.js"|awk -F. '{print $1}'
答案 2 :(得分:0)
find -name '*.js'| xargs -I file rename 's/\.js$//' file
它可以工作,如果要覆盖现有文件,则必须添加-f以重命名(重命名-f)。
答案 3 :(得分:0)
这对我有用:rename ".js" "" *.js