【问题标题】:ln -s create needed dirln -s create 需要
【发布时间】:2016-11-21 23:38:01
【问题描述】:
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

如何编写代码以创建所需的目录?

如果字符串中没有e01,它会尝试创建链接到:

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

我怎样才能编写我的代码,然后它会创建链接到:

~/TV/super.show/s01

【问题讨论】:

  • 你真的需要parallel 来创建符号链接吗?如果您使用while 循环将代码重写为可读的内容,那么您可以简单地使用mkdir -p
  • 嗯,我不太确定。我想创建链接,我使用grep 的输出来创建链接的子目录,我设法用parallel 做到了这一点。这可以更容易吗?
  • @mklement0 我已经尝试过使用xargs -i{},但是据我所知,我只从grep 获得了几个输出{} 变量给我们...。
  • xargs 如果你使用像 '>>super

标签: bash grep mkdir gnu-parallel ln


【解决方案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}

【讨论】:

  • 猜猜我必须这样做,希望我可以在一行中完成所有我想要的。
  • 做得很好。 GNU parallel 将这种修改输入的方法称为Perl expression replacement string
猜你喜欢
  • 2013-03-12
  • 2010-11-02
  • 2015-04-20
  • 2014-11-27
  • 1970-01-01
  • 2013-08-29
  • 1970-01-01
  • 1970-01-01
  • 2015-11-25
相关资源
最近更新 更多