Rename

重命名符號連結,使用帶有布爾“|”的正則表達式在 Linux 上

  • September 26, 2019

我有三個圖示:notte(不是符號連結)、astronomy(符號連結)和 gnome-astronomy(符號連結)。

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並且文件不是符號連結的情況下才有效。

該軟體包的rename實用程序util-linux也稱為rename.ul不理解正則表達式和-n,而是-s開關。

您可以在循環中重命名符號連結目標:

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

Perlrename腳本可以理解正則表達式和-n,但不能重命名符號連結目標。

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

引用自:https://unix.stackexchange.com/questions/543753