-1
votes

Trouvez un fichier avec une chaîne correspondante et effectuez des actions sur IT UNIX

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.

Toute aide serait apprécié.

J'ai essayé ceci: xxx


0 commentaires

3 Réponses :


2
votes

Ceci est ma solution Bash xxx

explication:

Trouver tous les fichiers (-f) qui ne correspondent pas (-NOt) correspondent (-Name) le modèle " _med ", pour chacun d'entre eux exécuter la commande sedd -i '1 {S / $ / $ / _2 /} 'Ajouter _2 à la fin de la ligne, une seule fois

trouver. -Type f--not -name " _med " -exec sed -i '' '1i \' $ '\ n' '_ 2' {} +

edit
Depuis que vous êtes sur une machine Mac (je ne le savais pas), la commande sed est un peu différente, essayez celui-ci xxx


3 commentaires

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



0
votes

Essayez la commande suivante, il recherchera des fichiers ignorant * _d.txt xxx


0 commentaires

0
votes

avec Recherche , Création de la commande avec option -PRINTF , puis exécutant avec tuyau à bash:

Trouver MyFolder / -MindePTH 1 -Type F -Not -Name '* _med.txt' -Printf 'echo' echo MV% P $ (ECHO% P | SEDTX / _MED.TXT / G ') \ n' | bash | bash

deuxième partie, ajout de contenu

Trouver MyFolder / -Mindepth 1 -Type F -Not -Name '* _med.txt' -exec sed -e -i '/ $ / a "_2"' {} +


6 commentaires

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