J'ai un tas de fichiers XML dans un répertoire dont la commande DOS2UNIX est effectuée sur eux et que de nouveaux fichiers seront ajoutés de temps en temps. Je au lieu d'exécuter manuellement la commande Dos2unix sur chaque fichier à chaque fois que je voudrais tout automatiser avec un script. Je n'ai même jamais regardé un script shell dans ma vie mais je l'ai jusqu'à présent depuis ce que j'ai lu sur quelques tutoriels: Cependant, je continue à obtenir la sortie "usage" montrant la sortie . Je pense que le problème est que je n'attribue pas correctement le nom du nouveau fichier (FNAME). P> P>
4 Réponses :
$ echo /tmp/testFiles/1.xml | sed s@testFiles/@testFiles/converted/@ /tmp/testFiles/converted/1.xml
Merci, mais pouvez-vous expliquer ce que cela fait: "$ (echo $ f | SED S @ testfiles / @ Testfiles / converti /)" Modifier: cette commande ne fonctionne pas. ERREUR: SED: Commande Garbed: S @ TestFiles / @ TestFiles / Converti /, Suppression de la commande SED donne une erreur: Impossible d'ouvrir les fichiers de fichier d'entrée
J'ajouterais simplement converti / code> avant ce nom du fichier.
Vous n'avez pas besoin sed code> pour cela. Vous pouvez le faire avec
$ {f / testfiles \ // testfiles \ / converti \ /} code>
@RUSH: Cela ne fonctionne que dans BASH non dans la coquille de Bourne ( / bin / sh code>)
Les gars, je veux écraser les fichiers afin de déplacer les nouveaux fichiers vers un autre répertoire n'est pas un problème. La commande ci-dessus ne fonctionne pas. D'autres suggestions? Merci.
Qu'est-ce que cela signifie "ne fonctionne pas"? Quelle erreur obtenez-vous? Peut s'il vous plaît montrer le message d'erreur?
@ALansmith: Que diriez-vous de Recherche / TMP / TestFiles / -MaxDepth 1 -Type F -exec Dos2unix {} + code> (si vous ne voulez pas avoir une sauvegarde)?
@IGORCHUBIN: Cette question est étiquetée bash code> et n'est pas marquée
sh code> ou
shell code> ou
posix-sh code>, donc je Pensez que les bismes sont acceptables.
Si tous les fichiers sont dans un répertoire d'un (pas de récursivité), alors vous êtes presque là.
find /tmp/testFiles -name '*.xml' -exec dos2unix {} +
Il ne stocke pas les résultats d'un globe élargi. Le GLOB n'est pas étendu à l'affectation.
@Denniswilliamson: Je vois que vous avez raison. J'ai supprimé ce commentaire, merci pour la correction.
La raison pour laquelle vous obtenez un message d'utilisation est que Dos2unix code> ne prend pas les arguments supplémentaires que vous fournissez. Cependant, il acceptera de multiples noms de fichiers (également via Globs). Vous n'avez pas besoin d'une boucle à moins que vous traitez plus de fichiers que vous ne puissiez être accepté sur la ligne de commande.
find /tmp/testFiles -name '*.xml' -exec dos2unix {} +
Il n'est pas clair que la mise en œuvre de DOS2UNIX vous utilisez. Différentes implémentations nécessitent des arguments différents. Il existe de nombreuses implémentations différentes autour de.
sur redhat / fedora / SUSE Linux, vous pouvez simplement taper p> sur Sunos, vous devez donner un nom de fichier d'entrée et de sortie, et la commande ci-dessus détruirait plusieurs de vos fichiers. P> p>