![将图片从一个文件夹递归复制到另一个文件夹的根目录?](https://linux22.com/image/870422/%E5%B0%86%E5%9B%BE%E7%89%87%E4%BB%8E%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6%E5%A4%B9%E9%80%92%E5%BD%92%E5%A4%8D%E5%88%B6%E5%88%B0%E5%8F%A6%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6%E5%A4%B9%E7%9A%84%E6%A0%B9%E7%9B%AE%E5%BD%95%EF%BC%9F.png)
因此,我有一个运行该特定程序的 Windows 虚拟机。详细信息如下:
- 该程序没有递归搜索功能。
- 我有很多可用磁盘空间。
- 我的图片文件夹中有多余的垃圾。(我只想复制图片,假设我有各种已知图片文件扩展名的图片(不包括档案))
- 我想使用命令行递归扫描我的主目录中的每一张图片,并将它们全部复制到当前目录,而不创建与我的图片文件夹匹配的子文件夹。(例如:
~/cyndaquil.png
复制到./cyndaquil.png
,而~/foo/bar/quilava.png
复制到./quilava.png
。此外,我的主目录很乱。)
那么,我可以使用什么命令来执行此操作吗?
答案1
file
这将复制(将会回显)该命令认为是某种图像的 所有文件:
for i in $(find . -type f -print0 | xargs -0 file | grep " image " | cut -d: -f1 ) ; do echo cp "$i" $PWD; done
答案2
如果您不关心名称冲突(foo/bar/name1
vs foo/other/name1
(但请参阅man cp
for --backup=numbered
),您可以阅读man find
以了解其作用:
find $HOME -type f -iname '*.png' -exec cp --backup=numbered {} $PWD \;