我有以下目录结构:
/home/dir1/abc.jpg
/home/dir1/abc.pdf
/home/dir1/dir2/abc.jpg
/home/dir1/dir2/abc1.jpg
/home/dir1/dir2/dir3/abc.jpg
我希望将jpg文件从它们复制到一个具有相同目录结构的新文件夹,例如:
/home/newdir1/abc.jpg
/home/newdir1/dir2/abc.jpg
/home/newdir1/dir2/abc1.jpg
/home/newdir1/dir2/dir3/abc.jpg
如何实现使用rsync或任何其他软件?
请帮助,非常感谢!!
答案 0 :(得分:0)
根据您在问题中所包含的内容,您可能会尝试以下几种方法。
您已指定要移动"文件。这意味着您要么使用mv
命令,要么使用rsync
' --remove-source-files
选项。例如:
mv /source1/* /source2/* /path/to/targetdir/
或
rsync -a /source1/ /source2/ /path/to/targetdir/
毫无疑问,您已经阅读了rsync
手册页中的部分内容,该部分解释了源尾部有无斜尾的差异。如果没有,请阅读,因为它很重要。
如果你的成千上万的源文件[有]相似的名字"需要在源目录中匹配,留下一些其他文件,你需要确定你的"相似的名字"可以使用路径名扩展进行区分,或者是否应使用正则表达式。如果是前者,那么使用mv
或rsync
将路径名扩展添加到您的来源就足够了。如果您需要使用正则表达式,那么find
可能是更好的选择:
find /source1/ /source2/ -regex ".*/file[A-F][0-9][0-9].txt" -exec mv "{}" /targetdir/ \;
如果这些问题无法解决问题,那么您需要在问题中提供更多详细信息。
答案 1 :(得分:0)
我会尝试像这样的小shell脚本:
#!/bin/sh
cd /home/dir1
JPEGS=`find . -name "*.jpg"`
tar cf - $JPEGS | (cd /home/newdir1 ; tar xf -)
首先获取所有jpg文件的列表以及它们的相对路径,然后将它们的tar文件写入管道,并将其更改为新目录,然后从其stdin中提取tar。