Part1: J'ai un dossier "MyFolder" avec plusieurs sous-dossiers comme "Nouveau" "vieux", etc. J'ai besoin d'un code UNIX qui boucle via chaque dossier et sous-dossier et créera une copie des fichiers "abc_med.txt" qui n'a pas "_med.txt" Par exemple: abc.txt -> abc_med.txt -> abc_med.txt Il ne devrait pas ajouter chaque fois ABC_MED_MED.TXT xx
Partie 2: Pour tous les fichiers avec "_med.txt", il devrait ajouter "_2" à la fin de la première ligne du fichier. P>
Toute aide serait apprécié. p>
J'ai essayé ceci: p>
3 Réponses :
Ceci est ma solution Bash trouver. -Type f--not -name " _med em>" -exec sed -i '' '1i \' $ '\ n' '_ 2' {} + p>
Trouver tous les fichiers (-f) qui ne correspondent pas (-NOt) correspondent (-Name) le modèle " _med em>", pour chacun d'entre eux exécuter la commande sedd -i '1 {S / $ / $ / _2 /} 'Ajouter _2 à la fin de la ligne, une seule fois P>
Depuis que vous êtes sur une machine Mac (je ne le savais pas), la commande sed est un peu différente, essayez celui-ci p>
SED: 1: "./.ds_store": code de commande non valide .Facez cette erreur? Et je ne peux pas voir et copier le fichier Je souhaite effectuer une copie et du fichier avec la fin _2.txt et add _2 à la fin des fichiers créés
Ok j'ai compris le problème: vous êtes sur un système MAC, la commande sed est différente là-bas, alors pourquoi dites-vous UNIX dans le titre de la question?
J'ai ajouté la syntaxe Mac de la commande, de toute façon votre question est confuse
Essayez la commande suivante, il recherchera des fichiers ignorant * _d.txt code>
avec deuxième partie, ajout de contenu p>
Recherche code>, Création de la commande avec option
-PRINTF code>, puis exécutant avec tuyau à bash: p>
Trouver MyFolder / -MindePTH 1 -Type F -Not -Name '* _med.txt' -Printf 'echo' echo MV% P $ (ECHO% P | SEDTX / _MED.TXT / G ') \ n' | bash | bash code> p>
Trouver MyFolder / -Mindepth 1 -Type F -Not -Name '* _med.txt' -exec sed -e -i '/ $ / a "_2"' {} + code> p>
Trouver:% PN ': Primaire ou opérateur inconnu
Et si la sortie de Trouver MyFolder / -Mindepth 1 -Type f -not -Name '* _med.txt' -printf`
Votre code fait le travail que la première partie crée un fichier comme abc.txt_med.txt il devrait être abc_med.txt ... aidez-moi avec le changement de code, merci en tonnes
Trouver MyFolder / -Mindepth 1 -Type F -NOT -Name '* _med.txt' -Printf 'Echo MV% P $ (ECHO% P | SED' S / .TXT / _MED.TXT / G ') \ N' | | bash | frapper
J'ai essayé le code ci-dessous, il remplace le fichier existant avec _MED au lieu de créer un nouveau fichier et d'ajouter _med.txt.
L'option -Mindepth 1 est conflictuelle avec "boucle via chaque dossier et sous-dossier" dans la question