1、问题描述
今天在centos6上用mv操作目录时,“mv 源文件(采用正则表达式格式标记连续三个目录)” ,像这样输完之后,由于疏忽直接空格回车,而没有敲要移动的目标文件,回车之后发现要移动的三个文件,两个消失了,正则表达式最后匹配的那个目录还在。
2、解决思路
(1)怀疑文件被删除,但是当时所在的路径下用户没有删除权限,只是把要移动的文件所有用户和所有组改成了自己所使用的用户
(2)怀疑文件被移动位置,但是具体移动到哪个用户的家目录下或者哪个文件下边不确定,且不确定是否被改名
3、解决方法
因为我移动文件就是为了移到家目录下删除,而mv的时候两个目录消失,第三个通过正则表达式匹配到的文件还在,所以当时直接操作移到家目录下执行了删除操作,想到思路1入手的时候,先是根据目录find整个服务器上的文件,发现没有,所以就一直怀疑是被删除而不是移动位置。
然后在虚拟机上创建了一个比较大的目录,如果删除的话会直接影响df -h出来的使用百分比,然后通过以下测试,发现在“mv 源目录(采用正则表达式匹配两个以上目录) ”执行之后,匹配到的前两个目录被移动到了第三个目录里边。
[root@localhost ~]# mkdir 2022-07-07_12387
[root@localhost ~]# mkdir 2022-07-06_23798
[root@localhost ~]# ll
total 8
drwxr-xr-x 2 root root 6 Jul 8 13:54 2022-07-06_23798
drwxr-xr-x 2 root root 6 Jul 8 13:54 2022-07-07_12387
drwxr-xr-x 3 root root 32 Jul 8 13:41 2022-07-08_89798
-rw-------. 1 root root 2761 Dec 21 2021 anaconda-ks.cfg
-rw-------. 1 root root 2041 Dec 21 2021 original-ks.cfg
drwxr-xr-x 2 root root 57 Jul 8 11:28 shell
drwxr-xr-x 2 root root 252 Mar 29 09:17 yum
[root@localhost ~]# mv 2022-07-0[6-8]*
[root@localhost ~]# ll
total 8
drwxr-xr-x 5 root root 80 Jul 8 13:54 2022-07-08_89798
-rw-------. 1 root root 2761 Dec 21 2021 anaconda-ks.cfg
-rw-------. 1 root root 2041 Dec 21 2021 original-ks.cfg
drwxr-xr-x 2 root root 57 Jul 8 11:28 shell
drwxr-xr-x 2 root root 252 Mar 29 09:17 yum
[root@localhost ~]# cd 2022-07-08_89798/
[root@localhost 2022-07-08_89798]# ls
2022-07-06_23798 2022-07-06_9124109 2022-07-07_12387
[root@localhost 2022-07-08_89798]# ll
total 0
drwxr-xr-x 2 root root 6 Jul 8 13:54 2022-07-06_23798
drwxr-xr-x 5 root root 80 Jul 8 11:31 2022-07-06_9124109
drwxr-xr-x 2 root root 6 Jul 8 13:54 2022-07-07_12387
4、总结mv忘敲目标路径的情况
情况一:“mv 源目录”,源目录是全名,没有正则表达式的匹配,此种情况忘记敲要移动的目标路径会直接报错。
[root@localhost ~]# mv 2022-07-08_89798/
mv: missing destination file operand after ‘2022-07-08_89798/’
Try 'mv --help' for more information.
情况二:“mv 源文件”,源文件为单个文件没有使用正则表达式匹配多个文件,此种情况忘记敲要移动的目标路径会直接报错。
[root@localhost ~]# mv 111
mv: missing destination file operand after ‘111’
Try 'mv --help' for more information.
情况三:“mv 源文件”,源文件包括文件和目录格式,是被正则表达式匹配到的连续多个文件或目录,忘记敲目标路劲时,前边匹配到文件夹会被移动到最后一个文件夹里边/前边匹配到的文件会被写到最后一个文件里(覆盖写入会有提示是否确认)。
[root@localhost ~]# mv 1112-11[1-2]*
mv: overwrite ‘1112-112’? ^C