初心者はここで...名前に2つのドットが含まれているファイル名を1つのドットに変更しようとしました
rename 's/.././' filename
ファイルは消えましたが、メモリには同じ量のスペースが残っているため、削除されたとは思いません。このファイルはどこに送信されますか?
ファイルの名前は.lename
になりました。
(これはファイルが以前にfilename
と呼ばれていたと想定していますが、「実際の」ファイルは別の名前になると思います。しかし、ファイルが呼び出されたにもかかわらず、最初の2文字が.
に置き換えられました。)
これは、正規表現のドットが 特殊文字 の意味が任意の文字に一致するためです。したがって、..
は任意の2文字です。 global修飾子(rename
)を追加しない限り、g
は最初の一致のみを置換するため、最初の2文字指定されたファイル名は置き換えられました。
s/regex/replacement/modifiers
の「置換」は正規表現ではないため、式の右側の.
s/.././
は期待どおりに機能することに注意してください。
今、あなたのファイルはどこですか:
.
で始まるファイルは隠しファイルです。したがって、ls
を実行しても表示されません。 ls -a
を実行して、これらのファイルを表示します。
mv .lename filename
を使用してファイルの名前を元に戻します
次回は、正規表現に特有のエスケープ文字:
rename 's/\.\././' filename
また、rename -n ...
を使用して予行演習を行い、実際の名前変更を実行する前に結果を確認することもできます。それはあなたにこのようなものを示したでしょう:
rename(filename, .lename)