6 votes

Remplacement de la commande DOS xcopy

Dans le DOS, il y a la commande

xcopy /s *.mp3 ..\TEMP2

Comment puis-je faire cela dans Ubuntu ?

cp -r *.mp3 ../TEMP2

copiera récursivement tous les fichiers mp3, malheureusement sans le chemin d'accès à cause de l'option *.mp3 filtre.

cp -r *.* ../TEMP2

copiera le chemin d'accès mais ne pourra pas être limité aux fichiers mp3

J'ai jeté un coup d'œil à rsync, mais je ne comprends pas.

8voto

Lekensteyn Points 162346

La puissance des outils dans Ubuntu réside dans la possibilité de les combiner. La commande suivante recherche tous les fichiers .mp3 dans le répertoire actuel et ses sous-répertoires, et les copie dans le répertoire ../TEMP2/ en préservant les chemins d'accès :

find -iname '*.mp3' -exec install -D {} ../TEMP2/{} \;
  • find -iname '*.mp3' - recherche 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)
    • \; - met fin à la -exec Befehl

Si vous souhaitez obtenir l'état d'avancement, ajoutez -ls ("liste") à la commande avant -exec . Il peut ê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

3voto

lubos hasko Points 13669

Il existe plusieurs options, mais aucune n'est vraiment simple, je le crains

rsync

rsync -r --include="*/" --include="*.mp3" --exclude="*" --prune-empty-dirs . ../TEMP2

Cela signifie qu'il faut exclure tous les fichiers ( exclude="*" ), mais pour 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 pas de fichiers mp3, vous pouvez utiliser l'option --prune-empty-dirs est nécessaire.

fermeture éclair

zip -R archive.zip "*.mp3"
unzip -d ../TEMP2 archive.zip && rm archive.zip

La première commande crée une archive contenant tous les fichiers mp3, la seconde décompresse le contenu dans le répertoire cible et supprime le fichier d'archive en cas de succès.

trouver

find . -iname "*.mp3" -exec install -D {} ../TEMP2/{} ";"

Cette opération permet de trouver tous les fichiers mp3 et de les copier dans le chemin d'accès correspondant dans le fichier ../TEMP2 après avoir créé la structure du répertoire ( install -D ).

copier tout et supprimer le reste

Cela n'a de sens que si vous n'avez que quelques fichiers que vous ne à copier :

cp -r * ../TEMP2
find ../TEMP2 -type f \! -iname '*.mp3' -delete

Ce programme copie tout et supprime ensuite tous les fichiers qui ne sont pas des fichiers mp3.

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