我有一个像这样的文件列表(数千个):

/path/2010 - filename.txt
/path/2011 - another file name.txt

始终遵循此模式:#### - string.txt
我需要将它们更改为如下所示:
/path/filename (2010).txt
/path/another file name (2011).txt

如何使用 bash、shell、终端等快速完成此操作?

最佳答案

未经测试。

find /path -name '???? - *.txt' -print0 | while read -d ''; do
    [[ $REPLY =~ (.*)/(....)\ -\ (.*)\.txt$ ]] || continue

    path=${BASH_REMATCH[1]}
    year=${BASH_REMATCH[2]}
    str=${BASH_REMATCH[3]}
    echo mv "$REPLY" "$path/$str ($year).txt"
done

一旦生成的 echo 命令看起来正确,删除 mv

关于regex - 如何将预先添加的年份批量移动到文件名的末尾?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11990893/

10-14 14:24
查看更多