In today’s chautauqua…

  • 0 Posts
  • 16 Comments
Joined 3 months ago
cake
Cake day: September 15th, 2025

help-circle
  • phaedrus@piefed.worldtoLinux@lemmy.mlBash scripting question
    link
    fedilink
    English
    arrow-up
    1
    ·
    15 hours ago

    Indeed, folks tend not to look into the docs enough to realize find is a powerful tool on its own!

    I think the other answers were just adhering to the request (trying to troubleshoot the script as is), but I generally go for pragmatism despite not being what was actually requested.



  • It might be instance related, I’m on PieFed, so perhaps the markdown implementation is different.

    Also, I realized that the parameter expansion might not be straightforward and added the GNU docs on it, but looks like you found a post about it at the same time! Glad to hear it got you sorted out.


  • phaedrus@piefed.worldtoLinux@lemmy.mlBash scripting question
    link
    fedilink
    English
    arrow-up
    39
    arrow-down
    1
    ·
    edit-2
    1 day ago

    You can do the entire thing as a one-liner using only find:

    find ./ -type f \( -iname "*.jpg" -or -iname "*.png" \) -exec sh -c 'mv "$0" "$(uuidgen -r).${0##*.}"' {} \;  
    

    Test on my machine:

    phaedrus@sys76 ~/D/test> ls -lh  
    total 0  
    -rw-r--r-- 1 phaedrus users 0 Dec  6 01:08 test1.jpg  
    -rw-r--r-- 1 phaedrus users 0 Dec  6 01:08 test1.png  
    -rw-r--r-- 1 phaedrus users 0 Dec  6 01:08 test2.jpg  
    -rw-r--r-- 1 phaedrus users 0 Dec  6 01:08 test2.png  
    -rw-r--r-- 1 phaedrus users 0 Dec  6 01:08 test3.jpg  
    -rw-r--r-- 1 phaedrus users 0 Dec  6 01:08 test3.png  
    phaedrus@sys76 ~/D/test> find ./ -type f \( -iname "*.jpg" -or -iname "*.png" \) -exec sh -c 'mv "$0" "$(uuidgen -r).${0##*.}"' {} \;  
    phaedrus@sys76 ~/D/test> ls -lh  
    total 0  
    -rw-r--r-- 1 phaedrus users 0 Dec  6 01:08 062d8954-9921-42bd-ad24-0e4ed403a5db.jpg  
    -rw-r--r-- 1 phaedrus users 0 Dec  6 01:08 111f859f-b1fe-4488-b2bc-75585320e3a3.png  
    -rw-r--r-- 1 phaedrus users 0 Dec  6 01:08 39b9fe4e-7a05-43c9-b30a-69e9a13aa3a9.png  
    -rw-r--r-- 1 phaedrus users 0 Dec  6 01:08 57bda91e-49e5-43fe-8318-aeeb2e3adde7.png  
    -rw-r--r-- 1 phaedrus users 0 Dec  6 01:08 97398eb7-54aa-488f-8fbe-0b84b5e5a50d.jpg  
    -rw-r--r-- 1 phaedrus users 0 Dec  6 01:08 f7a13274-e2c0-4fa7-9907-c590d1280c2e.jpg  
    

    btw, Lemmy doesn’t like language specifiers in the multi-line code blocks, so it’s difficult to read all that in its current form since there are no tabs to know how you have it formatted. Makes it virtually impossible to troubleshoot your specific script.

    edit: further reading on the ever useful variable expansions (${0##*.} portion of my one-liner):
    https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html












  • No differently than it’s used in Windows, plus a few more key-chords that utilize it. That’s the default in GNOME and KDE at least, and probably other DEs as well.

    I’m more interested in what people do with that strange menu key sitting next to my touch-starved right-CTRL. I know it’s for pulling up the context menu, but I have literally never used it for any reason. When I’m 100% keyboard, I’m probably in a terminal and it won’t do anything any way.


  • Others have said it, but SyncThing all the way. Open source, been around for a decade, battle tested, no cloud, full control over everything.

    I didn’t see this mentioned, but you can also tell KeePass to auto reload the database if the file gets updated elsewhere. Makes it so you can run the same KeePass database on multiple devices with live/realtime updates. I’ve used this setup instead of vaultwarden/passbolt on several IT teams to keep the important stuff separate from the normal systems. It’s not on by default usually, but right in the Basic Settings page under File Management.

    I have KeePass+SyncThing on 3 laptops, 2 androids, and a home server. If I add a password to one of my androids while I’m out and about (and I have cell data), next time I sit down at my desk it’s already available. Vice versa works, too. If my home server dies, the other devices don’t care and keep syncing amongst themselves. I think I’ve had some version of this setup going since SyncThing released, I can’t imagine using anything else.

    Do note that since there is no cloud or infrastructure behind it, sync conflicts do happen when a device in the network goes offline for a while. It’ll never get rid of files if there’s an error syncing, but instead create a second copy with a timestamped filename. If this happens to your password db file, KeePass can then merge the two copies together and sort things out mostly automatically. Over the many years I’ve been using this, it doesn’t happen as often when you’re the only person using any of the devices that sync. It can happen a lot when you share the setup with someone else, though.