名前の変更-「s //」と「y //」の意味は?


9

manページには、 2つの例を示します:

rename 's/\.bak$//' *.bak
rename 'y/A-Z/a-z/' *

したがって、sまたはyのいずれかです。 /replaceThis/withThis

先頭のsとyはどういう意味ですか?他のオプションはありますか?

回答:


12

最初のケースでは:

rename 's/\.bak$//' *.bak

ファイル名に対して正規表現を実行し、一致する部分(ファイル名の最後の.bak)を2番目の式(空)に置き換えます。

2番目の場合:

rename 'y/A-Z/a-z/' *

正規表現パターンスペースと照合し、ターゲットに文字変換します。つまり、範囲AZが範囲azに変更され、ファイル名が小文字になります。

コマンドと詳細については、sedのmanページを参照することをお勧めします。「s」コマンドが最も頻繁に使用されると思います。同様に、正規表現(セクション7)とperlのドキュメントも役に立ちます。特に、これはperlと正規表現のチュートリアルです。


からman sed

s / regexp / replacement /    
       正規表現をパターンスペースと照合します。成功した場合
       フル、交換と一致した部分を交換してください。の
       置換には、特殊文字&を含めることができます。
       マッチしたパターンスペースの部分とスペシャル
       \ 1から\ 9をエスケープして、対応する一致を参照します
       正規表現の部分式。

y / source / dest /  
       出現するパターンスペースの文字を音訳する
       ソースでdestの対応する文字に。

どうもありがとう-私は、人々が「sed」を指すようにすることは、特に特定のLinuxディストリビューションとOSXの間の多数の実装を考えると、最良のアイデアだとは確信していません
aaaaaa

@aaaaaaこのサイトは専らUbuntuに関するものです。
wjandrea 2018年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.