誤った名前変更コマンド後のファイルの場所

誤った名前変更コマンド後のファイルの場所

初心者です...ファイル名に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)

関連情報