如何从文件路径中获取 fiz dir/buz
,例如 fiz.js
和 dir/buz.js
?
我的最佳方案(我正在寻找更简单的方法):
find -name '*.js'| \ xargs -I{} echo {} | \ sed 's/.js$//' | \ xargs -I{} mv {}.js {}
如何从文件路径中获取 fiz dir/buz
,例如 fiz.js
和 dir/buz.js
?
我的最佳方案(我正在寻找更简单的方法):
find -name '*.js'| \ xargs -I{} echo {} | \ sed 's/.js$//' | \ xargs -I{} mv {}.js {}
$ shopt -s globstar
$ for i in **/*.js ; do echo "$i" "${i%.js}" ; done
针对bash man页面:
globstar
如果设置了此选项,在路径名扩展上下文中使用的模式**将匹配所有文件和零个或多个目录和子目录。如果模式后跟着一个 /,则只匹配目录和子目录。
${x%ext}
从$x
的结尾处删除ext
。有关更多信息,请参见字符串操作。
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 来重命名(rename -f)。
rename ".js" "" *.js