用linux删除filename中的第一个单词

时间:2012-12-01 17:00:18

标签: linux bash

我有大量需要重命名的文件。这个名字目前是'sink-foobar'。我想删除'sink-'。必须有办法用bash做到这一点,但我没有运气。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:6)

它始终是文字 sink-吗?如果是这样,请使用参数扩展和条带前缀模式:

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

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

for f in sink-*; do
  mv -- "$f" "${f#sink-}";
done