web-dev-qa-db-ja.com

名前がハイフンで始まるファイルの名前は変更できません

ファイル名の先頭にハイフンを付けてファイルの名前を変更しようとしています。

mv -example-file-name example-file-name

この:

mv '-example-file-name' example-file-name

結果:

mv: invalid option -- 'e'
40
Desmond Hume

ほとんどのGNU/Linuxコマンドは--オプションは、オプションの終わりを示し、後続の-接頭辞付きの単語はオプションとして扱われません。

  mv -- -example-file-name example-file-name

小さなテスト

$ touch -- -example
$ ls -l -- *ample
-rw-r--r-- 1 rgb rgb 0 Nov 25 09:57 -example
$ mv -- -example example
$
59
RedGrittyBrick

RedGrittyBrickの答えはとても良いです。別のオプションは次のとおりです。

mv ./-example-file-name example-file-name

小さなテスト:

$ touch ./-example
$ ls -l ./*ample
-rw-r--r-- 1 me me 0 Nov 25 16:02 ./-example
$ mv ./-example example
$ ls -l ./*ample
-rw-r--r-- 1 me me 0 Nov 25 16:02 ./example
19
gniourf_gniourf

このトリックは私にとって絶望的な時に機能します。 YMMV

rename \- '' *

名前を変更するには、ハイフンをエスケープする必要があります。名前の変更が単一引用符を尊重しない、または何らかのオーバーライドを提供しないのはなぜ私を超えています。

これは、名前の変更を使用して先頭のハイフンを確実に処理する唯一の方法です。私はmvの使用に関する他の投稿に同意しますが、何らかの理由でmvを使用できない場合、これは機能します。

0
Alex Z