6
votes

Déplacement de fichiers de manière rectuve sur Linux

trouver ./dir -type f -neame "* .t [argz] * [bz2]" -Print | xargs mv --target-annuaire = dir code> semble échouer sur le fichier qui a des espaces dans le nom. Comment l'améliorer? ou alternative?

Merci de la réponse ci-dessous: Mon MV ne prend pas en charge --Null ou -0, j'utilise Cygwin: P>

$ mv --help
Usage: mv [OPTION]... [-T] SOURCE DEST
  or:  mv [OPTION]... SOURCE... DIRECTORY
  or:  mv [OPTION]... -t DIRECTORY SOURCE...
Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.

Mandatory arguments t
.


0 commentaires

3 Réponses :


11
votes

Utilisez -print0 code> au lieu de -Print code> dans la commande Recherche code> et le xargs -0 code> (ou - NULL code>) Option - Les nuls seront alors utilisés comme séparateurs plutôt que comme des séparateurs plutôt que des lignes neuves et des espaces.

find ./dir -type f -iname "*.t[argz]*[bz2]" -print0 | xargs --null mv --target-directory=dir


2 commentaires

$ trouver ./ -type f -neame "* .xls" -print0 | xargs mv --Null --Target-répertoire = x ls xargs: AVERTISSEMENT: un caractère nul s'est produit dans l'entrée. Il ne peut pas être adopté Thro Ugh dans la liste des arguments. Voulez-vous utiliser l'option --Null? MV: Option non reconnue - NULL 'ESSAYEZ MV --HELP' Pour plus d'informations.


Désolé - aurait dû être une option xargs, pas une option MV! Fixé.



0
votes

Avez-vous regardé l'option -exec pour trouver?

find ./dir -type f -iname "*.t[argz][bz2]" -exec mv {} --target-directory=dir ';' 


1 commentaires

Cela reproduit un sous-processus pour chaque fichier, cependant, où la variante XARGS lotte des centaines de fichiers sur la même ligne de commande. Pour les petites opérations comme une seule invocation MV, cela peut être une différence de performance significative. Bien que vous ayez à utiliser --PRINT0 et --NULL que Martin souligne ci-dessus, sauf si vous êtes absolument sûr que les noms de fichiers n'ont pas d'espace.



0
votes

gnu trouve xxx


0 commentaires