我想批量重命名某个文件夹中的文件-
,并按照以下方式删除last之后的部分。
hello world - Mr Sheep
至 hello world
super user - question on super user.docx
至 super user.docx
abc - def - ghi jkl.pdf
至 abc - def.pdf
我希望使用命令行解决方案,但其他选项也可以。
如bash所示,要删除最后一个-
用法${f% - *}
,${var%Pattern}
将删除变量末尾的最短模式。有关更多信息,请阅读参数替换。结果是这样的
for f in path/*
do
if [[ $f = *.* ]]; then ext=".${f##*.}"; else ext=""; fi
echo mv "$f" "${f% - *}$ext"
done
确认新文件名正确后,您可以删除该文件echo
以进行真正的重命名。演示:
$ for f in "hello world - Mr Sheep" "super user - question on super user.docx" "abc - def - ghi jkl.pdf"; do if [[ $f = *.* ]]; then ext=".${f##*.}"; else ext=""; fi; echo mv "'$f'" "'${f% - *}$ext'"; done
mv 'hello world - Mr Sheep' 'hello world'
mv 'super user - question on super user.docx' 'super user.docx'
mv 'abc - def - ghi jkl.pdf' 'abc - def.pdf'
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句