名前変更コマンドの後、ファイルの場所が正しくありません。

名前変更コマンドの後、ファイルの場所が正しくありません。

初心者です...名前に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)

関連情報