2016-11-21 107 views
1
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 

我该如何编写我的代码,以便创建所需的目录?ln -s创建需要目录

如果没有E01它试图创建链接字符串:

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

我怎么能写我的代码,以便它然后创建一个链接:

~/TV/super.show/s01 
+1

您是否真的需要'parallel'来创建符号链接?如果您使用'while'循环将代码重写为可读的内容,那么您可以简单地使用'mkdir -p'。 – kay

+0

那么我不太确定。我想创建链接,我使用'grep'的输出来创建链接的子目录,并且我设法使用'parallel'来完成。这可以做得更容易吗? – angelsen

+0

@ mklement0我尝试过'xargs -i {}',但是我只从'grep'得到'{}'变量给我们几个输出......据我所知。 – angelsen

回答

1

可能:

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} 
+0

猜测我必须这样做,希望我可以做所有我想要的一行 – angelsen

+1

很好完成,GNU'parallel'调用这种修改输入的方法[Perl表达式替换字符串](https://www.gnu.org/software/parallel/parallel_tutorial.html#更换弦)。 – mklement0