2 KiB
title | date |
---|---|
Mass batch processing on the CLI | 2022-03-19 |
This post is day 4 of me taking part in the #100DaysToOffload challenge.
Some time ago, I needed to process a lot of video files with vlc. This is
usually pretty easy to do, for file in *.mp4 ; do ffmpeg ... ; done
is about
all you need in most cases. However, sometimes the files you are trying to
process are in different folders. And sometimes you want to process some files
in a folder but not others. That's the exact situation I was in, and I was
wondering if I needed to find some graphical application with batch processing
capabilities so I can queue up all the processing I need.
After a bit of thinking though, I realized I could do this very easily with a simple shell script! That shell script lives in my mark-list repository.
The idea is simple, you use the command to mark a bunch of files. Every file you mark is saved into a file for later use.
$ mark-list my-video.mp4 # Choose a file
Marked 1 file.
$ mark-list *.webm # Choose many files
Marked 3 files.
$ cd Downloadsr
$ mark-list last.mpg # You can go to other directories and keep marking
You can mark a single file, or a bunch of files, or even navigate to other directories and mark files there.
Once you are done marking, you can recall what you marked with the same tool:
$ mark-list --list
/home/kaan/my-video.mp4
/home/kaan/part-1.webm
/home/kaan/part-2.webm
/home/kaan/part-3.webm
/home/kaan/Downloads/last.mpg
You can then use this in the command line. For example, I was trying to convert everything to mkv
files.
for file in `mark-list --list` ; do ffmpeg -i "${file}" "${file}.mkv" ; done
It works! After you are done with it, you then need to clear out your marks:
mark-list --clear
Hopefully this will be useful for someone else as well. It does make it a lot easier to just queue up a lot of videos, and convert all of them overnight.