J'ai une énorme collection de vidéos qui doivent toutes être converties en mp4. La structure du dossier est comme ceciConversion de vidéos en lots dans des dossiers et sous-dossiers
Events
Chicago
Boston
San Fran
London Expo
Chaque événement contient toutes les vidéos au format avi ou .mkv. Je veux qu'ils soient convertis au même nom de fichier. mais avec l'extension mp4.
Ma question est de savoir comment faire une boucle dans un sous-dossier de dossiers, et aussi garder les noms de fichiers parce qu'ils ont des espaces en ce moment .. Voici ce que j'ai pour le moment.
sourcedir="$1"
destdir="$2"
cd "$sourcedir"
for i in `ls`; do
HandBrakeCLI -i "$i" -o "$destdir/${i%.*}.mp4" --preset="AppleTV"
echo $i
done
Phillips code:
cd "$sourcedir"
echo "Directory: $sourcedir"
destdir = sourcedir
for subdir in *
do
if [[ -d "$subdir" ]]
then
for file in "$subdir"/*
do
HandBrakeCLI -i "$file" -o "${file%.*}.mp4" --preset=AppleTV
echo "$file"
done
fi
done
1. Évitez d'utiliser 'cd' sans vérification d'utilisation' set -e' ou 'cd || exit 1', ou, mieux encore, ne change pas du tout le répertoire; Sinon, votre script pourrait fonctionner dans le mauvais répertoire. 2. 'destdir = sourcedir' n'est pas une affectation mais essayera d'appeler une commande nommée' destdir'. – Philipp