bash - xargs oneliner解压文件

  显示原文与译文双语对照的内容

在 bash 命令行 中,我必须找到系统中某个 NAME MATCHES的所有zip文件,然后将它们解压缩到我的目录中。

我想组织子文件夹中的解压缩文件,我想根据原始的zip文件 NAME ( 不使用完整路径) 选择我的子文件夹 NAME 。

不过,对于循环,我知道我现在学习xargs的时候,我想知道是否能在 xargs oneliner中做同样的事情,类似于下面的内容:


locate -r"<zipped files regex>" | xargs -i -t"foldername=$(echo {} | sed 's/.*///'); mkdir -p $folderName; unzip {} -d $folderName"

我收到一条消息:


foldername={}; mkdir -p ; unzip {} -d
xargs: foldername={}; mkdir -p ; unzip {} -d : No such file or directory

你能帮我使它工作?

谢谢!

时间: 作者:

iPhone 7 还没出来,我们已经在iPhone上获取细节 8,或者不管是想到下一步。 echo {} | sed 's/.*///'$() 之前,在xargs之前和在定位之前,在中执行。 所以在xargs中很难做到这一点。 一种不使用xargs的方法:


locate -r [.]zip$ | 
 sed 's!.*/([^/]*)$!mkdir -p"1"; unzip -n -d"1""&";!' | 
 sh 2> ERRORS

作者:

使用GNU并行提高可读性和可能的加速:


locate -r [.]zip$ | parallel"mkdir -p {/.}; cd {/.} && unzip {}"

观看介绍视频简介: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

浏览教程( 人工 parallel_tutorial ) 。 你和 命令行 在一起。

作者:
...