当我发出命令
mv file1 *.file1
Run Code Online (Sandbox Code Playgroud)
在file1所在的目录中,它会消失.它到底在哪里?我知道*在Linux下的文件名中是一个有效的字符,我应该转义该*字符以获得预期的结果
mv file1 \*.file1
Run Code Online (Sandbox Code Playgroud)
但如果没有逃脱它,它移动到哪里?
结果mv file1 *.file1取决于匹配的内容*.file1
*.file1没有匹配,则file1重命名为*.file1*.file1匹配一个文件,则将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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
356 次 |
| 最近记录: |