In bash I would like to extract part of many filenames and save that output to another file.
The files are formatted as coffee_{SOME NUMBERS I WANT}.freqdist.
#!/bin/sh
for f in $(find . -name 'coffee*.freqdist)
That code will find all the coffee_{SOME NUMBERS I WANT}.freqdist file. Now, how do I make an array containing just {SOME NUMBERS I WANT} and write that to file?
I know that to write to file one would end the line with the following.
> log.txt
I'm missing the middle part though of how to filter the list of filenames.
The previous answers have indicated some necessary techniques. This answer organizes the pipeline in a simple way that might apply to other jobs as well. (If your
sed
doesn't support ‘;’ as a separator, replace ‘;’ with ‘|sed’.)If the intention is just to write the numbers to a file, you do not need find command:
The below should do it which can then be re-directed to a file:
Guru.
You can do it natively in
bash
as follows:This is a pure bash solution. No external commands (like
sed
) are involved, so this is faster.Append these numbers to a file using:
(You will need to delete/clear the file before you start your loop.)