Batch deletion of smaller files from group of files via unix command line

Posted by artlung on Super User See other posts from Super User or by artlung
Published on 2010-04-29T14:02:59Z Indexed on 2010/04/29 14:07 UTC
Read the original article Hit count: 396

Filed under:
|
|
|
|

I have a large number (more than 400) of directories full of photos. What I want to do is to keep the larger sizes of these photos. Each directory has 31 to 66 files in it.

Each directory has thumbnails, and larger versions, plus a file called example.jpg

I dispatched the example.jpg file easily with:

rm */example.jpg

I initially thought that it would be easy to delete the thumbnails, but the problem is they are not consistently named. The typical pattern was photo1.jpg and photo1s.jpg. I did rm */photo*s.jpg but it ended up some of the files named photoXs.jpg were actually larger and not smaller. Argh.

So what I want to do is scan each directory for filesize and delete (or move) the thumbnails. I initially thought I'd just ls -R every file and extract the size of each file and save those under a threshold. The problem? In one directory the large will be 1.1 MB and the thumb is 200k. In another the large is 200k and the small 30k.

Even worse, the files really are mostly named photo1.jpg - so simply putting them all in the same folder, sorting by size, and deleting in groups would not work without renaming already, and if it's possible I'd prefer to keep them in their folders.

I was almost resolved to just doing this all manually, but then thought I'd ask here.

How would you do this task?

© Super User or respective owner

Related posts about unix

Related posts about command-line