Merci de la réponse ci-dessous: Mon MV ne prend pas en charge --Null ou -0, j'utilise Cygwin: P> 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?
$ 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
.
3 Réponses :
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
$ 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 CODE> MV --HELP' Pour plus d'informations.
Désolé - aurait dû être une option xargs, pas une option MV! Fixé.
Avez-vous regardé l'option -exec pour trouver?
find ./dir -type f -iname "*.t[argz][bz2]" -exec mv {} --target-directory=dir ';'
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.
gnu trouve