brent timothy saner on 16 Nov 2018 07:30:50 -0800
|
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: [PLUG] scripting help, variables in sed
|
- From: brent timothy saner <brent.saner@gmail.com>
- To: plug@lists.phillylinux.org
- Subject: Re: [PLUG] scripting help, variables in sed
- Date: Fri, 16 Nov 2018 10:30:36 -0500
- Autocrypt: addr=brent.saner@gmail.com; prefer-encrypt=mutual; keydata= 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 AGmGDY9HHUM=
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=to:references:from:openpgp:autocrypt:subject:message-id:date :user-agent:mime-version:in-reply-to; bh=UFnyT7mVbkr+UHHXS1AeFWur/jHMf1bRHzwTXGtp3Ok=; b=MQZBA7vZyUKs5ks6WgmI9LE0Tuu0pF+yYT7QiavKjsTLmO1dU1+ye5sksI9KxvBG9F bEuVohup/u2a25AbxAR9yKFnWDu7tkpXTyJ5Vj13STgsVOhhgDqtAa2jfkvyXV2DfaPA mviL3GyHGJ/sSSB09BSTIrAxXIaLP6X5QqIvcL7N9qy/GVrR+CICr12PGQ/KtZ3eC44x vL4yOSZCwdm1yT0jrpsRx3cRxzrkZKCocxKAbuFfTrGVLjNx3MezdlTDGMn8WdfCheJM wKt93HbmgDZr2Jm5dmn6c4BWMkx2CxEO//Wg4oRaj8zsVx2z0pnoyd6FQjjX0IMuqT8u hkeg==
- Openpgp: id=748231EBCBD808A14F5E85D28C004C2F93481F6B
- Reply-to: Philadelphia Linux User's Group Discussion List <plug@lists.phillylinux.org>
- Sender: "plug" <plug-bounces@lists.phillylinux.org>
- User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.3.0
On 11/16/18 10:02 AM, Michael Lazin wrote:
> Thank you, I am very familiar with find and exec, but this doesn't
> accomplish my goal. Maybe I wasn't clear. I want a number to be added
> in front of each file name and that number to be incremented by one so
> each file ends up with a unique name so they can be put together in a
> single folder. I was under the impression that sed -i would accomplish
> this, but maybe I'm doing this entirely wrong, I want to edit the
> filename and not the content. I am sorry, I am comfortable with bash
> but I am at best a noob programmer. Thanks.
>
ah, yes, i thought you were only interested in moving to a single
directory as that's the only thing explicitly mentioned.
so sure, if you want to do that:
__________________________________________
num=0
for f in $(find * -type f -name "*.jpg");
do
mv ${f} ${num}${f}
((num++))
done
__________________________________________
but that's a bit silly, that. they're already going to have a unique
filename if you're pulling them all from the same source directory.
the below not only guarantees a unique filename per unique file content
(MOSTLY[0]), but would have completely removed your need to run fdupes:
__________________________________________
for f in $(find * -type f -name "*.jpg");
do
newfname=$(md5sum ${f} | awk '{print $1".jpg"}')
mv ${f} newdir/${newfname}
done
__________________________________________
but again, this all predicates on you (pointlessly) running this on a
glob search against files which are all in the same directory.
if they're in subdirs, it's a little more comfortable to deal with in
python:
__________________________________________
#!/usr/bin/env python3
import os
import hashlib
#cnt = 0
for root, subdirs, files in os.walk('path/to/parent/dir'):
for f in files:
fpath = os.path.join(root, f)
if f.endswith('.jpg'):
# If you want hash-based naming, which has built-in dupe
avoidance:
h = hashlib.md5() # can also be a stronger hash, e.g. .sha512()
with open(fpath, 'rb') as data_in:
h.update(f.read()) # it'd be smart to implement
chunking here [1] but being that these are in theory just JPEG files...
new_fpath = os.path.join(root, '{0}.jpg'.format(h.hexdigest()))
# Or if you just want to use a blind counter prefix:
#new_fpath = os.path.join(root, (str(cnt) + f))
#cnt += 1
# Remember to uncomment cnt = 0 above.
os.rename(fpath, new_fpath)
__________________________________________
ta-da.
[0] https://en.wikipedia.org/wiki/MD5#Collision_vulnerabilities
using e.g. sha512sum for instance, while increasing the length of
the filenames, would avoid this. you're very much unlikely to encounter
it "in the wild" as a result of this particular use and scope, though.
[1]
https://git.square-r00t.net/OpTools/tree/centos/find_changed_confs.py#n68
Attachment:
signature.asc
Description: OpenPGP digital signature
___________________________________________________________________________
Philadelphia Linux Users Group -- http://www.phillylinux.org
Announcements - http://lists.phillylinux.org/mailman/listinfo/plug-announce
General Discussion -- http://lists.phillylinux.org/mailman/listinfo/plug