我有三个图标:诺特(不是符号链接)、天文学(符号链接)和 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