Pour chaque file avec l'extension spécifiée dans un directory, je voudrais utiliser juste une sous-string à partir du nom de file pour l'append à un autre file et le sortir comme un file avec une extension différente mais la même sous-string.
J'ai trouvé des exemples similaires à ce que je voudrais faire, mais je suis en train d'écrire un script bash, j'ai donc rencontré quelques défis dont j'ai eu du mal à find des exemples.
Par exemple, je commencerais avec filename.sample et je veux seulement la sous-string "nom de file".
Ce que j'ai essayé de faire est:
for i in /path/to/*.sample do bar="${i%%.sample*}" sed "s/^>\(.*\)/>\1;label=${bar##*/};/" "$i" > "$i"_bar \; done
Le contenu des files *.sample
est le suivant:
*.sample > MEWFJWRNFF_141 AB28974UJBDASX
La sortie désirée est:
Output_bar > MEWFJWRNFF_141; label=filename; AB28974UJBDASX
Faites-moi savoir si je n'ai pas été clair en aucune façon! Je vous remercie!
for i in /path/to/*.sample do str="; label=$(basename -s.sample $i);" sed "/^>/ s/$/$str/" "$i" done
basename
command basename
donne seulement le nom du file, dépouillant le path. Et -s.sample
l'extension i
/path/to/filename.sample
, str
contiendra ; label=filename;
; label=filename;
/^>/ s/$/$str/
finda une ligne commençant par >
et appenda le contenu de la variable str
à la fin de cette ligne Je ne comprends pas comment vous voulez que le file de sortie soit nommé. Si i
/path/to/filename.sample
, "$i"_bar
donnera / /path/to/filename.sample_bar