2017-10-11 3 views
1

J'ai 32 répertoires avec un fichier .pdb chacun. Comment puis-je utiliser grep sur ces fichiers et enregistrer chacun sur des sorties spécifiques?Grep sous-répertoires et enregistrer plusieurs sorties

Le résultat attendu est quelque chose comme:

1.pdb > 1_clean.pdb 
2.pdb > 2_clean.pdb 
3.pdb > 3_clean.pdb 
... 
32.pdb > 32_clean.pdb 

J'ai essayé ce qui suit, mais il ne fonctionne pas:

grep -r "^ATOM" *.pdb . > *_clean.pdb 

Répondre

1

trouver + shell solution:

find -type f -name "[0-9].pdb" -exec sh -c 'fn=$1; n=${fn##*/}; n=${n%.*}; \ 
     grep "^ATOM" "$fn" > "${n}_clean.pdb"' _ {} \;