use*_*089 20 linux command-line ubuntu
在 GUI 环境中,带有替换的拖放操作将使用复制的内容替换文件和整个目录(包括内容)。有没有办法使用“mv”命令来完成相同的直观结果?
Jan*_*der 20
不与 mv。
mv(尽管它的名字)的核心功能是重命名一个对象。UNIX 做出的保证之一是重命名是原子的——您永远不会看到部分完成的重命名。如果您想更改/etc/passwd其他程序可能正在查看的文件(例如 ),并且您希望他们看到该文件的旧版本或新版本,而没有其他可能性,则此保证非常有用。但是像您描述的“递归重命名”会破坏这个保证——你可以在中间停止它,你会有一个半移动的树,可能是一团糟——所以它并不真正符合哲学的mv。这是我的猜测为什么mv -r不存在的。
(别说mv休息,在其他较小的方式理念。例如,mv实际上做了cp之后rm在将文件从一个文件系统移动到另一个文件系统时。)
够哲学了。如果你想在同一个文件系统上递归地将一棵树从一个地方移动(“拖放”)到另一个地方,你可以获得mv如下的效率和速度(例如):
cp -al source/* dest/ && rm -r source/*
Run Code Online (Sandbox Code Playgroud)
该-l标志cp的意思是“创建硬链接,而不是复制” -它有效地创建一个新的文件名,它指向同一个文件的数据作为旧文件名。不过,这只适用于支持硬链接的文件系统——所以任何原生的 UNIX 文件系统都可以,但它不适用于 FAT。
的&&意思是“如果前命令成功仅运行下面的命令”。如果您愿意,可以一次运行两个命令。
| 归档时间: |
|
| 查看次数: |
40003 次 |
| 最近记录: |