Quel serait un bon moyen de déplacer un type de fichier d'un répertoire et de tous ses sous-répertoires?
Comme "déplacer tout * .ogg in/thisdir récursivement à/somedir". J'ai essayé quelques choses; Mon meilleur effort était (toujours pas si génial):
find /thisdir -type f -name '*.ogg' -exec mv /somedir {} \;
Il est retourné sur chaque ligne avant chaque nom de fichier,
mv: cannot overwrite non-directory `/thisdir/*.ogg' with directory `/somedir'
vous pouvez utiliser trouver trouvé avec xargs pour cela
find /thisdir -type f -name "*.ogg" -print0 | xargs -0 -Imysongs mv -i mysongs /somedir
La commande -i dans la commande ci-dessus indique à quelle chaîne de remplacement que vous souhaitez utiliser (sinon elle ajoute les arguments à la fin de la commande).
OR
[.____] Dans votre commande, essayez simplement de déplacer '{}' après mv
commande.
find /thisdir -type f -name '*.ogg' -exec mv -i {} /somedir \;
find /thisdir -type f -name "*.ogg" -exec mv {} /somedir \;
Vous êtes un peu interchangé les arguments pour mv
Dans ZSH ou Bash 4, pour rassembler tous les *.ogg
Fichiers dans /somedir
:
mv /thisdir/**/*.ogg /somedir
Si vous vouliez reproduire la hiérarchie de l'annuaire: (AVERTISSEMENT, TAPED directement dans le navigateur)
rsync -a --Prune-empty-dirs --include='*/' --include='*.ogg' --exclude='*' /thisdir /somedir