我使用空文本文件设置了以下文件夹:
1/a.txt
2/b.txt
我只想将 txt 文件复制到另一个目录,同时保持它们的目录结构。所以我尝试了以下命令:
mkdir -p temp/s;
find ./ -name '*txt' -exec cp --parents '{}' ./temp/s \;
现在我从当前目录中看到以下文件:
1/a.txt
2/b.txt
temp/s/1/a.txt
temp/s/2/b.txt
temp/s/temp/s/2/b.txt
我不明白为什么最后一行会temp/s/temp/s/2/b.txt
出现。有人可以向我解释为什么会发生这种情况以及如何修复我的命令以使其temp
不嵌套在另一个命令中temp
吗?
这是我期待的最终结果:
1/a.txt
2/b.txt
temp/s/1/a.txt
temp/s/2/b.txt
您有一个竞争条件:因为
temp/s
is infind
的搜索路径,find
正在列出文件,而生成cp
的 s 正在添加新文件。您必须在运行时排除子目录
find
:请注意,替换
\;
为+
将产生更少的cp
进程。