因此,我有一个运行该特定程序的 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 \;