我想将foo
特定时刻的文件夹的目录内容(包括子文件夹结构)移动到另一个目录。如果文件被添加到原始文件夹,则不应移动它们。
如果我在进程运行时运行类似命令mv foo/* bar/
并将文件添加到文件夹中,可以观察到哪些行为?foo
文件已移动
文件未移动
如果文件名排在当前正在移动的文件的文件名之后,则文件被移动
其他行为
Windows/DOS 中的行为是否不同?解决所描述问题的最简单方法是什么?
答案1
没有缓存因为该mv
命令甚至看不到通配符。
发生的情况是命令行扩展通配符并将扩展列表传递给mv
所以如果你有foo/1' and
foo/2 and
foo/3` 然后运行
mv foo/* bar/
将扩大并实际上跑步
mv foo/1 foo/2 foo/3 bar/
一旦 shell 完成扩展并开始执行mv
命令,那么对目录的任何更改foo
(例如foo/4
添加)都不会成为命令的一部分,因此将被保留。
这个过程被称为globbing
。