3つのアイコンがあります。ノート(シンボルリンクではない)、天文学(シンボルリンク)、およびgnome-astronomy(シンボルリンク)です。
ls -l
astronomy.svg -> celestia.svg
gnome-astronomy.svg -> konquest.svg
notte.svg
これら2つのシンボリックリンクの名前を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