我有一个类似这样的文件夹结构:
a/
|b/
| f1
| f2
|c/
| f3
| f4
|d/
| f5
| f6
其中b
、c
、 和d
可以包含主文件和子目录。然后我有一个目标文件夹e
,其中存在目标文件e
夹。当我运行cp -r a/c e/
或 时,cp -r a/d e/
c
它们会按照我的预期d
复制到e
其内部文件夹结构。然而,当我运行时,cp -r a/b e/
结果并不一样。仅a/b
复制的内容,而不复制b
其本身。它几乎就像运行的命令是cp -r a/b/* e/
我看不到带有ls
或 的文件夹有什么特别之处file
。它具有与c
和相同的权限,d
并且当我在其上运行时显示为目录file
。
有没有办法调试正在发生的事情?我第一次遇到使用子进程从 python 运行副本的问题:
import subprocess
import pathlib
for folder in pathlib.Path("a/").iterdir():
if folder.is_dir():
subprocess.run(["cp", "-r", str(folder), "e/"])
之后我尝试cp -r a/b e/
从命令行运行该命令并遇到了同样的问题。
答案1
显然,该机器正在运行一项服务,该服务每 X 秒删除一次空文件夹。因此,b
发生在之后的副本e
已经被删除了。导致了我上面描述的这种行为。