给定文件路径如fiz.jsand dir/buz.js,如何去掉后缀获得fiz dir/buz?
我最好的镜头(我正在寻找更简单的东西):
查找 -name '*.js'| \
xargs -I{} 回声 {} | \
sed 's/.js$//' | \
xargs -I{} mv {}.js {}
给定文件路径如fiz.jsand 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