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