我有2个目录
dir1/results1/a.xml
dir1/results1/b.txt
和
dir2/results2/c.xml
dir2/results2/d.txt
我只想将dir2 / results2文件夹中的文件复制到dir1 / results1文件夹中,以便结果如下:
dir1/results1/a.xml
dir1/results1/b.txt
dir1/results1/c.xml
dir1/results1/d.txt
我尝试了shell comand
cp -R dir2/results2/ dir1/results1/
但是它被复制为
dir1/results1/a.xml
dir1/results1/b.txt
dir1/results1/results2
什么是正确的方法?
答案 0 :(得分:2)
在您的具体情况下
cp dir/results2/* dir/results1
会做你想做的。在两种情况下无法正常工作:
如果您有一个以句点开头的文件,例如 dir / results2 / .abc 。这些文件将不会被复制。
如果在dir / results2中有子目录。尽管确实不会复制它们(根据需要,因为您只想复制文件,而不是目录),但是您会收到一条错误消息,至少不是很优雅。
这两个问题都有解决方案,因此,如果这对您来说是一个问题,请创建一个包含相应主题的单独帖子。
(UPDATE)如果文件名扩展名将生成一个参数行,该参数行的长度比允许的最小值要长(例如,如果目录中有很多文件或行长的文件),那么我的解决方案也不起作用。在这种情况下,类似
find dir/results2 -maxdepth 1 -type f | xargs -i --no-run-if-empty] cp {} dir/results1
这还将解决隐藏文件的问题,如上所述。
答案 1 :(得分:0)
(cd dir1 && find . -maxdepth 1 -type f -print0 | tar -T - --null -cf - ) | (cd dir2 && tar -xf -)
处理所有案件,包括。文件和非常大的文件,但不会复制sibdirs。删除-depth以复制sibdirs。需要疯子。
答案 2 :(得分:-1)
svg_image_selector
命令非常方便。
尝试一下:
tar
它不仅将复制纯文件,还将复制在tar cf - -C dir2/results2 . | ( cd dir1/results1 ; tar xf - )
中找到的任何其他文件,例如目录等。