J'ai foiré et ai accidentellement un tas de fichiers avec l'extension .mp3.mp3.mp3.mp3
Comment puis-je les modifier, de manière récursive - et sur plusieurs annuaires - pour les définir simplement .mp3?
J'ai foiré et ai accidentellement un tas de fichiers avec l'extension .mp3.mp3.mp3.mp3
Comment puis-je les modifier, de manière récursive - et sur plusieurs annuaires - pour les définir simplement .mp3?
Réponses:
En utilisant la findcommande dans bashet quelques scripts créatifs, ceci peut être nettoyé comme par magie. Les scripts suivants ont été testés sous Mac OS X 10.9.5 mais devraient également fonctionner correctement sous Linux. Commencez par exécuter ceci comme un «essai à sec» pour vous assurer de cibler les bons fichiers:
find '/path/to/your/files' -type f -name '*.mp3.mp3*' |\
while read RAW_FILE
do
DIRNAME=$(dirname "$RAW_FILE")
BASENAME=$(basename "$RAW_FILE")
FILENAME="${BASENAME%%.*}"
EXTENSION="${BASENAME#*.}"
echo "mv "${RAW_FILE}" "${DIRNAME}/${FILENAME}".mp3"
done
Vous devez d’abord changer le /path/to/your/filespour faire correspondre le chemin réel aux fichiers affectés sur le système. A noter également la dernière ligne qui est echod'une mvcommande (de déplacement). Je le fais pour m'assurer que le script cible les bons fichiers.
La findlogique de base est la suivante:
find '/path/to/your/files' -type f -name '*.mp3.mp3*'
Ce qui signifie fondamentalement «Trouvez tous les fichiers du chemin /path/to/your/filesqui sont en fait des fichiers (et non des répertoires) ayant un motif de nom de fichier correspondant *.mp3.mp3*. Cela devrait intercepter tous les fichiers auxquels plus d'un fichier est .mp3attaché. .mp3.mp3, .mp3.mp3.mp3, .mp3.mp3.mp3.mp3, .mp3.mp3.mp3.mp3.mp3, Etc ...
Le script ne se gênera pas pour traiter les fichiers qui ont juste le bon résultat, .mp3ce qui constitue un avantage certain en termes de rapidité si vous ne possédez qu'un petit sous-ensemble de fichiers mal nommés .mp3.mp3.mp3.mp3au lieu de devoir renommer tous les fichiers .mp3.
Ainsi, lorsque vous exécutez cette opération, vous devriez voir une liste de mvcommandes «d'essai à sec» qui résoudront votre problème: Recherchez tous ces .mp3fichiers multiples et renommez-les en un fichier singulier .mp3.
Maintenant que cela fonctionne bien, lancez le script final comme ceci:
find '/path/to/your/files' -type f -name '*.mp3.mp3*' |\
while read RAW_FILE
do
DIRNAME=$(dirname "$RAW_FILE")
BASENAME=$(basename "$RAW_FILE")
FILENAME="${BASENAME%%.*}"
EXTENSION="${BASENAME#*.}"
mv "${RAW_FILE}" "${DIRNAME}/${FILENAME}".mp3
done
Notez que la dernière ligne est la mvcommande fonctionnelle actuelle . Lorsque vous exécutez cette version du script, votre répertoire entier sera recherché pour ces plusieurs .mp3fichiers, puis exécutera la mvcommande complète pour résoudre le problème.