1 votes

Noms de répertoires avec des blancs - vérification récursive des fichiers

Pour vérifier la durée de lecture des fichiers audio, j'utilise le script suivant :

#!/bin/bash
for dir in $(find . -type d); do
cd $dir

for file in *.ogg *.wav *.mp3
do
  duration=$(ffprobe "$file" 2>&1 | awk '/Duration/ { print $2 }')
  echo -e "$duration\t$file"
done | sort -n

cd - > /dev/null
done

Si les noms des répertoires lus de manière récursive ne contiennent pas d'espaces, cela fonctionne parfaitement.

Lorsqu'il y a un espace dans le nom du répertoire, la première et la deuxième partie sont séparées dans la variable $dir, donc...

  • dir 1

devient

  • dir

y

  • 1

Malheureusement, mes connaissances en matière de script sont insuffisantes, et je serais donc extrêmement reconnaissant si quelqu'un pouvait m'indiquer la bonne direction pour que le nom complet du répertoire soit transmis à la variable.

Merci beaucoup,

James.

1voto

damianb Points 131

Au lieu de

for dir in $(find . -type d); do
cd $dir

使用

find . -type d -print0 | while read -r -d $'\0' dir; do
cd "$dir"

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X