Search code examples
bashgrepmkdirgnu-parallelln

ln -s create needed dir


echo "super-super.show.s01.e01" | grep -oPi '(?<=-)[\w\W]+(?=\.s\d\d)|s\d\d|e\d\d' | parallel -N3 ln -sf ~/super-super.show.s01.e01 ~/TV/{1}/{2}/{3}
# tries to make ~/TV/super.show/s01/e01 failes due to no such file or directory

How can i write my code so it creates the needed dir?

if there is no e01 in the string it tries to create link to:

~/TV/super.show/s01/{3}

How can i write my code so it then creates link to:

~/TV/super.show/s01

Solution

  • Maybe:

    echo '>>super<< 12" star*show.s01.e01.mp4' |
      parallel --rpl '{dir} s:\.(s\d\d):/$1:; s:\.(e\d\d):/$1:; s/\....$//;' mkdir -p ~/TV/{dir}';' ln -s {} ~/TV/{dir}