regex - Bash: list different prefixes of files -
suppose have series of files, listed as:
t001_000.txt t001_001.txt t001_002.txt t005_000.txt t005_001.txt t012_000.txt ... t100_000.txt
we want merge files same t??? prefix. example, every file prefix t001 want do:
merge t001_*.txt > newt001.txt #i made function
how bash list of different prefixes?
here's pure bash way of getting prefixes:
for file in *.txt echo "${file%_*.txt}" done | sort -u
this give list of file prefixes. there, use cat.
the for
loop goes through of files. for file in t*_*.txt
limit files you're picking up.
the ${file%_*.txt}
small right pattern filter removes _*.txt
variable $file
. sort -u
sorts of these prefixes, , combines duplicates.
the best way use function:
function prefix { file in *.txt echo "${file%_.txt}" done | sort -u } prefix | while read prefix ${prefix}_*.txt > cat $prefix.txt done
note ${...}
around name. that's because $prefix_
valid shell script variable. need ${prefix}
let shell know i'm talking $prefix
, not $prefix_
.
Comments
Post a Comment