首页 > 解决方案 > 使用 shell prefer sed cut 命令和 awk 重命名文件名

问题描述

我想重命名文件名,如下所述

如果文件名是 abc_test_tt_3447.txt 我想要 abc_tt_3447.txt

如果文件名是 abc_test_ff_tt_3447.txt 我想要 abc_tt_3447.txt

如果我想用空替换 test 和 test_ff

我试过用 sed 命令

标签: pythonshellawksedcut

解决方案


使用 bash :

shopt -s extglob
for file in *_test*; do
    echo mv -- "$file" "${file//_test?(_ff)/}""
done

或者:

for file in *_test*; do
    [[ $file =~ (.*)_test(_ff)?(.*) ]] &&
    echo mv -- "$file" "${BASH_REMATCH[1]}${BASH_REMATCH[3]}"
done

删除echo完成后的测试。


推荐阅读