重命名符号链接,使用带有布尔值“|”的正则表达式在Linux上

重命名符号链接,使用带有布尔值“|”的正则表达式在Linux上

我有三个图标:诺特(不是符号链接)、天文学(符号链接)和 gnome-天文学(符号链接)。

ls -l 
astronomy.svg -> celestia.svg
gnome-astronomy.svg -> konquest.svg
notte.svg

我想将这两个符号链接重命名为 notte。它应该是这样的:

ls -l 
astronomy.svg -> notte.svg
gnome-astronomy.svg -> notte.svg
notte.svg

命令rename是:

rename -s 'celestia' -- 'notte' *.svg

我希望使用带有“|”的正则表达式来运行命令,但它不起作用。这是这样的:

rename -s -n 'konquest\|celestia' -- 'notte' *.svg 
rename -s -n 's/konquest\|celestia/notte/g' *.svg 
rename -s -n 's/\(konquest\|celestia\)/notte/g' *.svg 

这种情况仅在没有符号链接-s且文件不是符号链接的情况下才有效。

答案1

rename该包的实用程序也util-linux称为rename.ul不理解正则表达式和-n,但理解-s开关。

您可以使用以下命令重命名循环中的符号链接目标:

for i in konquest celestia; do
    rename.ul -s "$i" notte *.svg
done

Perlrename脚本确实理解正则表达式 和-n,但无法重命名符号链接目标。

答案2

rename -s -n 's/konquest|celestia/notte/g' *.svg 

相关内容