Sous DOS, il y a la commande
xcopy /s *.mp3 ..\TEMP2
Comment puis-je faire cela dans Ubuntu?
cp -r *.mp3 ../TEMP2
va copier récursivement tous les fichiers mp3, malheureusement sans le chemin à cause du filtre *.mp3
.
cp -r *.* ../TEMP2
copiera le chemin mais ne peut pas être limité aux fichiers mp3
J'ai jeté un œil à rsync, mais je ne comprends pas.
La puissance des outils dans Ubuntu réside dans le fait que vous pouvez les combiner. La commande suivante trouve tous les fichiers .mp3 dans le répertoire en cours et ses sous-répertoires et les copie dans le dossier ../TEMP2/
, en préservant les chemins d'accès:
find -iname '*.mp3' -exec install -D {} ../TEMP2/{} \;
find -iname '*.mp3'
- trouve tous les fichiers se terminant par .mp3
(insensible à la casse) et -exec
- exécute une commande pour chaque correspondance: install -D {} ../TEMP2/{}
- copie le fichier correspondant dans ../TEMP/
en préservant le chemin. ({}
est remplacé par le chemin d'accès, y compris le nom du fichier)\;
- termine la commande -exec
Si vous souhaitez obtenir la progression, ajoutez -ls
("liste") à la commande avant -exec
. Il peut aussi être placé après \;
, mais dans ce cas, le nom est affiché après avoir été copié. Exemples:
find -iname '*.mp3' -ls -exec install -D {} ../TEMP2/{} \;
find -iname '*.mp3' -exec install -D {} ../TEMP2/{} \; -ls
Il y a plusieurs options, mais aucune n'est vraiment simple, j'en ai peur…
rsync -r --include="*/" --include="*.mp3" --exclude="*" --Prune-empty-dirs . ../TEMP2
Ceci indique d'exclure tous les fichiers (exclude="*"
), mais de regarder dans tous les répertoires (include="*/"
) et d'inclure tous les fichiers mp3 (include="*.mp3"
). Si vous ne souhaitez pas copier des répertoires ne contenant aucun fichier mp3, vous devez en outre utiliser l’option --Prune-empty-dirs
.
Zip -R archive.Zip "*.mp3"
unzip -d ../TEMP2 archive.Zip && rm archive.Zip
La première commande crée une archive avec tous les fichiers mp3, la seconde décompresse le contenu dans le répertoire cible et supprime le fichier d’archive s’il a réussi.
find . -iname "*.mp3" -exec install -D {} ../TEMP2/{} ";"
Tous les fichiers mp3 seront trouvés et copiés dans le chemin correspondant du répertoire ../TEMP2
, après avoir créé la structure de répertoires (install -D
).
Cela n'a de sens que si vous avez juste quelques fichiers que vous ne voulez pas ne voulez pas copier:
cp -r * ../TEMP2
find ../TEMP2 -type f \! -iname '*.mp3' -delete
Cela copie tout, puis supprime tous les fichiers qui ne sont pas des fichiers mp3.