When organising things like images and trying to avoid duplicates, one pattern is to rename everything to `dirname_deadbeef0123.ext` where the `deadbeef0123` is the first 12 hex digits of the sha256 sum. In nushell this becomes ```nu def hash_rename [ stem = "" ] { let s = ( if $stem == "" { pwd | path basename } else { $stem } ) let xs = $in if ( $xs | is-empty ) { ls *.* } else { $xs } | each { |x| let ifn = $x.name let ext = ( echo $ifn | path parse | get extension ) let hash = ( sha256sum $ifn | str substring 0..11 ) let ofn = $"($s)_($hash).($ext)" if ( $ofn | path exists ) { print $"($ofn) exists" } else { print $"($ifn) to ($ofn)" mv -v $ifn $ofn } } } ```