Je sais très bien comment copier simplement une liste de fichiers vers un autre emplacement à l'aide de bash, mais le problème est que ma liste de fichiers contient des noms de fichiers contenant à peu près TOUS les caractères à échapper dans bash. Il y a des tonnes d'espaces!, ",", "",?, Et à peu près tous les autres personnages auxquels vous pourriez penser doivent être évités.
Au début, j'étais fatigué de parcourir le fichier texte et d'échapper à tous ces caractères, mais c'est ... épuisant, même avec la recherche et le remplacement (même si ça marche) (je l'ai testé avec une liste de fichiers beaucoup plus petite.) des guillemets dans le fichier texte avant et après le chemin, mais cela ne fonctionne pas. J'ai également essayé d'ajouter des guillemets simples après les% après cp, mais je n'ai évidemment aucune idée de ce que je fais. :) (Je sais que je devrais échapper aux guillemets simples dans le fichier texte si je devais en quelque sorte entourer le chemin du fichier avec des guillemets simples.)
J'utilise cette commande pour copier la liste de fichiers dans un autre emplacement, mais là encore, cela ne fonctionne pas avec les caractères spéciaux.
cat file.txt | xargs -J % cp % ./folderToMoveto/
Je sais qu'il y a d'autres commandes qui font la même chose sans rien imputer à xargs, et certaines réponses disent que xargs peut le faire tout seul, mais je n'ai pas réussi à les faire fonctionner, alors que celle ci-dessus fonctionne.
De plus, je suis sous OS X.
https://ss64.com/osx/
. Sur la page d'accueil,https://ss64.com/
vous trouverez la documentation d'un certain nombre d'environnements de script.-0
dexargs -0
vous assurer qu'aucun caractère ne nécessite un traitement particulier, car seul\0
le nom de fichier sera pris à la fin du nom de fichier, tout le reste sera utilisé tel quel .xargs
n'utilise pas le shell et appellecp
directement en lui passant le nom du fichier tel quel avec tous les caractères qui auraient nécessité un traitement spécial dans le shell.