【发布时间】:2022-01-07 13:42:06
【问题描述】:
阅读here 和here 我发现了这个解决方案,用bash 替换文件名中的两个下划线:
for file in *; do
f=${file//__/_}
echo $f
done;
但是,我如何最轻松地扩展此表达式以仅用一个替换任意数量的下划线?
【问题讨论】:
-
如果您扩展了通配(如果尚未启用,请使用
shopt -s extglob启用它),您可以使用f="${f//+(_)/_}"。例如。对于文件“test_____something__else.txt”,for f in test_*; do f="${f//+(_)/_}"; echo $f; done返回test_something_else.txt。更多细节在这里:askubuntu.com/a/889746