嗨,我想知道如何将文件夹复制到 julia 中的现有文件夹中。就我而言,我有一个名为 BigEarthNet-v1.0 的文件夹,其中包含许多子文件夹,其中每个子文件夹包含许多 tif 文件(即 BigEarthNet-V1.0 -> [folder1,folder2, ...],其中文件夹 1 -> [image1.tif,image2.tif, ...])。我想将 100 个子文件夹随机复制到名为 BigEarthNet-v1-concise 的现有文件夹中。从字面上看,制作一个简洁的数据集。
folders = readdir("BigEarthNet-v1.0")
random_paths = rand(folders, 100)
for folder in random_paths
cp(joinpath("BigEarthNet-v1.0",folder), "BigEarthNet-v1.0-concise", force = true)
end
如果我不输入
force = true
我会收到错误。如果我执行代码,但实际上只有最后一个文件夹被复制,而且它也是文件夹内的文件而不是文件夹本身。据我了解,force =true
删除现有文件夹BigEarthNet-v1-concise
并再次重新创建该文件夹,这就是我出现此行为的原因。无论如何要实现我想要做的事情?
您可能想要类似的东西:
from = "BigEarthNet-v1.0"
to = "BigEarthNet-v1.0-concise"
mkdir(to)
folders = readdir(from)
random_paths = rand(folders, 100)
for folder in random_paths
cp(joinpath(from, folder), joinpath(to, folder))
end
cp
命令 的行为有所不同,具体取决于目标是否是现有目录。这可以使命令变得不那么冗长。如果 dir
是现有目录: cp "$path" dir
相当于 cp "$path" "dir/$(basename "$path")"
如果 target 存在并命名现有目录,则文件层次结构中每个文件的相应目标路径的名称应为 target、单个
字符(如果 target 不以<slash>
结尾)和文件相对于包含 source_file 的目录的路径名。<slash>
这使得 shell 中的常见用法不那么冗长,但不太明确,并且已决定不在 Julia 中复制此行为。参见例如这个问题.