123456789101112131415161718192021222324252627282930313233343536 |
- #!/bin/bash
- # A tool to scan the current directory for supported media files
- # and to verify whether any of them are corrupt using ffmpeg or
- # imagemagick accordingly, and bash >= 4.0 syntax.
- # Define an image scanner
- graphics=("gif" "bmp" "jpg" "png" "jpeg" "ico")
- scan_image() {
- for t in ${graphics[*]}; do
- if [ "${1##*.}" = "$t" ]; then
- echo "scanning $1"
- local o=$(gm identify "$1")
- [ $? -eq 0 ] && echo "$o"
- fi
- done
- }
- # Define a video scanner
- av=("mkv" "mp3" "rm" "rmvp" "mp4" "m4v" "avi" "wmv" "flv" "mov" "mpg" "mpeg" "ogg" "ogm" "webm" "xvid" "wpl")
- scan_video() {
- for t in ${av[*]}; do
- if [ "${1##*.}" = "$t" ]; then
- echo "scanning $1"
- local o=$(ffmpeg -v error -i "$1" -f null - 2>&1)
- [ $? -ne 0 ] && [ -n "$o" ] && echo "$o"
- fi
- done
- }
- # Recursively send all files and their extensions to defined scanners
- find "$PWD" -type f -print0 | while IFS= read -r -d $'\0' f; do
- scan_image "$f"
- scan_video "$f"
- done
- echo "scan complete"
|