使用单个bash命令重命名目录中的多个文件

时间:2017-04-05 16:39:57

标签: bash

我正在尝试重命名目录中的多个文件。目的是删除尾随的_bkp扩展名。 我想出的是如下所示,但是众所周知,这不会奏效,但你明白了。任何帮助?

find -iname "*.sql_bkp" -exec mv {} sed -e 's/\_bkp//g' {} \;

find -iname *.sql_bkp -exec mv {} $(sed -e 's/\_bkp//g' {}) \;

2 个答案:

答案 0 :(得分:3)

您可以使用:

find . -iname '*.sql_bkp' -exec bash -c 'echo mv "$1" "${1%_bkp}"' - {} \;

如果您对输出感到满意,只需在echo之前删除mv

答案 1 :(得分:0)

试试这个 -

$find -iname "*.sql_bkp" -exec basename {} _bkp \;

OR

$for i in *.sql_bkp; do mv "$i" "$(basename "$i" _bkp)";done