shell - Rename File Based on Portion of Directory Name using zsh -
i rename file in directory based upon portion of directory name. have following structure:
sample_1234/all_r2.gz sample_2345/all_r2.gz sample_3456/all_r2.gz in each directory create new file concatenation of multiple other files. name new concated file using number portion of directory name. example,
sample_1234/1234_r2.gz sample_2345/2345_r2.gz sample_3456/3456_r2.gz i can return portion of directory name want with:
pwd | grep -o '[0-9][0-9][0-9][0-9]' but unable new file name using zmv. suggestions in zsh shell? thanks,
don't use find, use zmv. use ( ) pairs grab bits of filename want, , ${1}, ${2} etc reference them. here's folder structure:
$ ls **/* sample_1234/all_r2.gz sample_4567/all_r2.gz sample_2345/all_r2.gz sample_6890/all_r2.gz sample_1234: all_r2.gz sample_2345: all_r2.gz sample_4567: all_r2.gz sample_6890: all_r2.gz and here's zmv, assuming you've got loaded:
$ zmv -n 'sample_(*)/all_r2.gz' 'sample_${1}/${1}_r2.gz' mv -- sample_1234/all_r2.gz sample_1234/1234_r2.gz mv -- sample_2345/all_r2.gz sample_2345/2345_r2.gz mv -- sample_4567/all_r2.gz sample_4567/4567_r2.gz mv -- sample_6890/all_r2.gz sample_6890/6890_r2.gz it grabs between _ , / in filename from current directory, allows reference number string @ end of directory name. insert filename using ${1} reference, replacing all.
it's worth using zmv -n see happen before it.
Comments
Post a Comment