2

我有大量需要重命名的文件。该名称当前为“sink-foobar”。我想删除“sink-”。必须有办法用 bash 做到这一点,但我没有运气。

4

2 回答 2

6

简单的 :

rename 's/sink-//' *files

它是 Perl,有时命名为prename,它默认安装在 Ubuntu 和许多发行版上。

为确保您拥有正确的,请运行以下命令:

file $(readlink -f $(type -p rename)) | grep &>/dev/null -i perl &&
    echo "Good version" ||
        echo "ELF version, not the good one"

在 Debian 和衍生版本(Ubuntu ...)上,您可以使用以下命令将其设置为默认值:

 update-alternatives --set rename /usr/bin/vendor_perl/rename

https://metacpan.org/module/rename

于 2012-12-01T17:01:15.437 回答
6

它总是文字 sink-吗?如果是这样,请使用参数扩展和去除前缀模式:

NAME='sink-foobar'
echo ${NAME#sink-}

所以,作为一个完整的脚本:

for f in sink-*; do
  mv -- "$f" "${f#sink-}";
done
于 2012-12-01T17:02:27.090 回答