我刚刚递交了一个包含40,000多张图像的目录,该目录包含每个文件的三个版本,这使得必须在服务器之间进行传输。
我正在寻找一种方法,使用bash(OSX终端)查找和删除(rm)所有文件,例如,文件名末尾的_web或_thumb,就在.jpg(或.gif)之前,或.png,或.bmp等)扩展。
因此,要清楚,我有以下文件:
1.jpg
1_web.jpg
1_thumb.jpg
2.gif
2_web.gif
2_thumb.gif
etc.
我只想要“1.jpg”,“2.gif”等等。
我以前能够重命名扩展程序,但是我的命令行fu非常弱,而且我最终试图找出可重用的东西(我需要做的)这几次,因为我正在为这个项目开发一个连续的迁移脚本。)
编辑:经过多一点工作后,我发现了rm和xargs的一些奇怪限制,我必须解决这个问题。我基本上调整了下面接受的答案,结果是:
$ find . -name '*_thumb.*' -print0 | xargs -0 rm -f
$ find . -name '*_web.*' -print0 | xargs -0 rm -f
现在我已经减少了大约10,000个文件 - 在网络上推送文件方面节省了很多!
答案 0 :(得分:2)
一个(相对强大的)选项是运行
find . -iregex ".*\(_web\|_thumb\)\.\(jpg\|png\|bmp\)" -delete
假设您在目录中没有除图像文件以外的任何内容,则运行另一个(更简单的)选项
rm *_web.* *_thumb.*
警告:这也将删除名为my_web.file.jpg的文件,因此如果您想要安全玩游戏,则必须添加所有扩展名而不是依赖。* 如果您知道您的扩展名总是3个字符,那么您可以使用类似* _thumb的内容。???
答案 1 :(得分:0)
我面前没有MAC或UNIX终端,但我想像以下内容可能会有效
rm *_web.jpg
rm *_web.jpg
rm *_thumb.gif