初心者です...名前に2つのドットを持つファイル名を次のようにして単一の点に変更しようとしています。
rename 's/.././' filename
ファイルは消えましたが、メモリにはまだ同じ容量が残っているため、削除されたようには見えません。ファイルはどこに転送されますか?
答え1
これでファイルを呼び出します.lename
。
(ファイルがfilename
以前に呼び出されたと仮定すると、「実際の」ファイルの名前は異なりますが、ファイルの呼び出し方法に関係なく、最初の2文字は置き換えられました。.
)
これは正規表現の点が次のようになるためです。特殊文字重要性任意の文字に一致。だから..
それはランダムな2文字です。rename
追加しないと最初のアイテムだけが置き換えられるのでグローバル修飾子(g
)、そのファイル名の最初の2文字が置き換えられました。
ここで「交換」に注意してください。s/regex/replacement/modifiers
正規表現ではないので、.
式の右側がs/.././
期待どおりに機能します。
今ファイルはどこにありますか?
a で始まるファイルは.
隠しファイルです。そのため、実行するとその項目は表示されませんls
。このファイルを表示するには実行してくださいls -a
。
以下を使用してファイル名を変更します。mv .lename filename
次に、正規表現関連の文字をエスケープしてください。
rename 's/\.\././' filename
また、rename -n ...
実際の名前変更を実行する前にテスト実行を実行し、結果を確認することもできます。これにより、次の内容が表示されます。
rename(filename, .lename)