コマンドを発行すると
mv file1 *.file1
file1が置かれているディレクトリでは、それは消えます。どこに行き着くの?*
Linuxでのファイル名に有効な文字であり、次*
のような期待される結果を得るには、文字をエスケープする必要があることを知っています。
mv file1 \*.file1
しかし、それを逃れなかった場合、それはどこに移動されましたか?
の結果はmv file1 *.file1
、何が一致するかによって異なります*.file1
*.file1
何にも一致しない場合file1
は、名前がに変更されます*.file1
*.file1
が1つのファイルと正確に一致する場合file1
、一致したファイルの名前に名前が変更され、一致したファイルは失われます。*.file1
と一致し、そのファイルがディレクトリである場合file1
、一致したディレクトリに移動されます。*.file1
複数のファイルに一致し、最後に一致したファイルがディレクトリである場合、、、およびfile1
一致したすべてのファイル(このディレクトリを除く)がディレクトリに移動されます。*.file1
複数のファイルに一致し、最後に一致したファイルがディレクトリではないmv
場合、エラーで失敗します。以下の実験を参照してください。
$ cat /etc/*-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.04
DISTRIB_CODENAME=precise
DISTRIB_DESCRIPTION="Ubuntu 12.04.2 LTS"
NAME="Ubuntu"
VERSION="12.04.2 LTS, Precise Pangolin"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu precise (12.04.2 LTS)"
VERSION_ID="12.04"
$ ls
$ touch file1
$ ls
file1
$ mv file1 *.file1
$ ls
*.file1
$ touch file1
$ ls
file1 *.file1
$ mv file1 *.file1
$ ls
*.file1
$ touch 1.file1
$ touch file1
$ mv file1 *.file1
mv: target `*.file1' is not a directory
$ ls
1.file1 file1 *.file1
$ mkdir z.file1
$ mv file1 *.file1
$ ls z.file1/
1.file1 file1 *.file1