如何使用xargs从HTML文件创建软链接?

时间:2019-05-25 12:47:59

标签: linux bash xargs

问题是我的目录充满了html文件。但是,当我在Firefox中打开该文件夹时,很难导航,因为当我打开该文件夹时,还存在所有关联的html文件夹。

我仅使用html的ln -s到单独的查看目录进行了测试,并对其进行了测试。

现在,我的问题是尝试在数百个文件中设置这些ln -s,但我不知道该怎么做。我认为最好的方法是在xargs输出上使用ls,但似乎无法使语法正常工作。

我认为我的问题是我需要解析ln -s的两组参数,但是我无法使其工作

我尝试了下面的许多不同变体,但是无法使用语法。我也尝试过使用gnu parallel,但似乎仍然无法正确使用语法。

ls Downloads (filenames) | grep html | xargs ln -s ~\Downloads\(filenames) ~\ViewingDirectory\(filename)

任何帮助将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:1)

您误解了xargs的用法。然后您解析ls的输出,通常认为这是个坏主意。

更好的解决方案是:

for f in ~\Downloads\*.html ; do
    b=$(basename "$f")
    ln -s "$f"  ~\ViewingDirectory\"$b"
done

答案 1 :(得分:0)

如果您坚持使用xargs,则可以按照以下方式进行操作:

find ~/Downloads/ -type f -name '*.html' \
    | xargs -I@ sh -c 'ln -s @ ~/ViewingDirectory/"$(basename @)"'

现在,使用xargs,您可以使用ln标志来并行运行-P调用:

find ~/Downloads/ -type f -name '*.html' \
    | xargs -P"$(nproc)" -I@ sh -c 'ln -s @ ~/ViewingDirectory/"$(basename @)"'

其中nproc返回可用的处理单元数。