我有一个像这样的文件列表(数千个):
/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/