• 1 Post
  • 75 Comments
Joined 2 years ago
cake
Cake day: February 17th, 2024

help-circle



  • Jesus. That’s brutal. I’m not in the software world and have never experienced an process like you just described.

    I do remember feeling similarly disgusted years ago applying for a retail job where I had to do an insulting “phone” interview/test where a computer asked me a bunch (like 20-30) of dumb fucking questions like:

    • “Have you ever stolen money from your job?”
    • “Do you think it’s okay to come to work drunk?”
    • “If you put money in a vending machine and got two items instead of one, would you put additional money in for the second item?”

    That last question very specifically is one I’ll always remember because of how incredibly stupid and insulting it is.

    I hope you find work at a company that respects you as a human being and as a professional.


  • find /path/to/starting/dir -type f -regextype egrep -regex 'some[[:space:]]*regex[[:space:]]*(goes|here)' -exec mv {} /path/to/new/directory/ \;
    

    I routinely have to find a bunch of files that match a particular pattern and then do something with those files, and as a result, find with -exec is one of my top commands.

    If you’re someone who doesn’t know wtf that above command does, here’s a breakdown piece by piece:

    • find - cli tool to find files based on lots of different parameters
    • /path/to/starting/dir - the directory at which find will start looking for files recursively moving down the file tree
    • -type f - specifies I only want find to find files.
    • -regextype egrep - In this example I’m using regex to pattern match filenames, and this tells find what flavor of regex to use
    • -regex 'regex.here' - The regex to be used to pattern match against the filenames
    • -exec - exec is a way to redirect output in bash and use that output as a parameter in the subsequent command.
    • mv {} /path/to/new/directory/ - mv is just an example, you can use almost any command here. The important bit is {}, which is the placeholder for the parameter coming from find, in this case, a full file path. So this would read when expanded, mv /full/path/of/file/that/matches/the/regex.file /path/to/new/directory/
    • \; - This terminates the command. The semi-colon is the actual termination, but it must be escaped so that the current shell doesn’t see it and try to use it as a command separator.