J'essaie de trouver des fichiers contenant * .nef et de les déplacer dans un sous-répertoire nommé NEF du dossier dans lequel se trouve le fichier.
J'ai commencé à tester avec la commande suivante, mais celle-ci est toujours copiée dans mon répertoire actuel, qui est mon dossier personnel.
find testfolder/*.nef -exec mv NEF \;
Dans la section man find, j'ai lu comment utiliser -execdir
, mais utiliser ceci au lieu de -exec
a toujours le même résultat.
La question est donc la suivante: comment puis-je assumer de manière dynamique le répertoire actuellement trouvé et les fichiers mv trouvés dans un dossier de sous-répertoire nommé NEF? (qui n'existe pas encore)
Merci d'avance!
Vous avez eu raison de considérer -execdir
. Quelque chose de simple comme ci-dessous devrait fonctionner
find testfolder/ -name '*.nef' -execdir mkdir -p NEF \; -execdir mv {} NEF/ \;
Essayer:
find testfolder/ -iname "*.nef" -exec bash -c 'mkdir $(dirname "{}")/NEF ; mv "{}" $(dirname "{}")/NEF/' \;
dirname
utilisé pour extraire le chemin du résultat puis l'utiliser pour créer un nouveau sous-répertoire avant de déplacer le fichier.