User Tools

Site Tools


bash

loop over files by type

  for i in in *.webm
  do
      echo $i
  done

will echo those files. be aware that you're probably going to want to enclose $i in quotes, e.g.:

  for i in *.webm
  do
      ffmpeg -i "$i" "$i.ogg"
  done

mass rename

there’s a package in apt called rename. (not part of the perl distribution; google lead me to some lying liar on the internet. maybe he was right at one time.)

so let's say you found a sick-awesome album. so you've done a nice yt-dlp –split-chapters https://www.youtube.com/watch?v=aJIDqYZ7qM0. now you got all these things that are titled like, this soundtrack caused me to ACTUALLY DIE and i am a GHOST now (not clickbait) link to my onlyfans in bio, music for men women children best music great music - 001 photograph [aJIDqYZ7qM0].webm, and a 002, and so on.

  ls | rename -d 's/ \[[^]]*\]\././'

pipe ls to rename. -d for “not the directory, only rename the file”, and then do a sed-style replacement string.

bonus, you can use -n or –nono for “no rename” (or as I like to call it, “not really tho”) - i.e., don't actually rename, just do a rename. It spits out a preview. Be sure to put the -n before the sed pattern.

you can use named capture groups, but you have to do \1, etc. And then the console will bitch at you that you should have done $1, but $1 doesn't work.

bash.txt · Last modified: 2024/10/18 20:22 by adam