Happy with my bash progress!

2 years ago by harsh3466 to c/linux

This is just me celebrating a small win. I've been slowly learning bash scripting, and just now I was able to quickly write a simple bash script to automate a file moving task without referring to my notes or the web!

It's not a super complicated script, I'm just happy I'm starting to internalize the knowledge I've been building.

I've been organizing my media files after ripping our DVD collection. I had all the files for The Smurfs cartoon (love the Smurfs) in the main Smurfs show folder. I wanted to put them all into their respective season folders (Season.XX). Here's the script:

#! /bin/bash

for number in {01..09}; do
    find . -type f -name "The.Smurfs.S$number*" -exec mv {} Season.$number/ \;
done

I could have done it as a one liner, but I like to keep things like this for future reference.

load all comments
MonkderVierte 1 point 2 years ago
path: 0 15127506, hotness: undefined, score: 1, children: 4
DollyDuller 2 points 2 years ago

If you want to share your script with others, I think it's a good idea to make it as easy to read as possible.

If you're just keeping it for yourself, that's fine. But if you're sharing it with me, the more readable it is, the easier I'll be able to understand what you're trying to do and how you're solving the problem. This will make it easier for us to discuss ideas and improvements together. To be honest, one-liners can be a bit confusing because they can do multiple things at once. Breaking things down into individual steps makes it easier for me to follow along and for you to understand why you made certain decisions.

Plus, it's a good habit to get into for your own future reference - you'll be able to look back and understand your thought process more easily.

As the famous saying from SICP goes:

programs must be written for people to read, and only incidentally for machines to execute

path: 0 15127506 15128290, hotness: undefined, score: 2, children: 1
harsh3466 1 point 2 years ago

Agree. Make it as easy to read as possible. I learned this particularly after I had written a script that had a lot of nesting. It worked initially, but not for long and when I went back to debug I was like, "What the fuck was I thinking here?"

I ended up completely rewriting it to minimize the nesting and make it much more efficient and readable

path: 0 15127506 15128290 15134921, hotness: undefined, score: 1, children: 0
linux
linux

@lemmy.ml

login for more options
67083
9205
4151

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

  • Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.
  • No misinformation
  • No NSFW content
  • No hate speech, bigotry, etc

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

go to feed...