Answers:
不与mv
。
mv
(尽管其名称)的核心功能是重命名对象。UNIX做出的保证之一是重命名是原子的-绝不允许您看到部分完成的重命名。如果要更改/etc/passwd
其他程序可能正在查看的文件(例如,),并且希望他们看到文件的旧版本或新版本,而没有其他可能性,则此保证非常有用。但是,像您描述的那样,“递归重命名”会破坏这种保证-您可以在中间将其停止,并且树会移动一半,甚至可能是一团糟-因此,这与哲学不符。的mv
。那是我对为什么mv -r
不存在的猜测。
(别说mv
休息,哲学在其他较小的方式。例如,mv
实际上做了cp
,然后rm
从一个文件系统移动文件时,到另一个地方。)
足够的哲学。如果要将一棵树从一个位置递归移动(“拖放”)到同一文件系统上的另一个位置,则可以得到mv
如下的效率和速度(例如):
cp -al source/* dest/ && rm -r source/*
该-l
标志的cp
意思是“创建硬链接而不是复制”-它实际上是在创建一个新文件名,该文件名指向与旧文件名相同的文件数据。不过,这仅适用于支持硬链接的文件系统-因此,任何本机UNIX风格的文件系统都可以,但不适用于FAT。
的&&
意思是“如果前命令成功仅运行下面的命令”。如果愿意,可以一次运行两个命令。
您可能会想要更改以下正确答案:
https://github.com/iaindooley/pickdrop
例:
说我有:
test/
test/index.php
test/images/
test/images/a.jpg
test/images/thing.png
我想将这些东西移动到/ site
所以看起来像:
site/
site/public/
site/public/index.php
site/public/a.jpg
site/public/thing.png
我可以去:
cd images &&
pick a.jpg thing.png
cd .. &&
pick index.php &&
cd .. &&
mkdir site &&
mkdir site/public &&
cd site/public &&
drop
这实际上是剪切并粘贴。