Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 用“删除损坏的gz档案”;xargs rm";_Bash_Xargs_Gunzip - Fatal编程技术网

Bash 用“删除损坏的gz档案”;xargs rm";

Bash 用“删除损坏的gz档案”;xargs rm";,bash,xargs,gunzip,Bash,Xargs,Gunzip,在将.gz文件提交到Hadoop/Spark之前,我想对其目录进行预处理。这是为了避免问题,例如。下面的bash管道几乎满足了我的需要,只是xargsrm似乎没有删除通过gunzip-t测试的文件 gunzip -t *.gz 2>&1 | cut -f 2 -d: - | xargs rm 管道无声地工作。然而,当再次调用gunzip-t*.gz时,它会打印出来 gzip: unhappy.gz: unexpected end of file 或者类似的。出于某种原因,这看起

在将.gz文件提交到Hadoop/Spark之前,我想对其目录进行预处理。这是为了避免问题,例如。下面的bash管道几乎满足了我的需要,只是
xargsrm
似乎没有删除通过
gunzip-t
测试的文件

gunzip -t *.gz 2>&1 | cut -f 2 -d: - | xargs rm
管道无声地工作。然而,当再次调用
gunzip-t*.gz
时,它会打印出来

gzip: unhappy.gz: unexpected end of file

或者类似的。出于某种原因,这看起来好像只删除了一个文件,然后就完成了。两次调用
xargs
的(更复杂的)管道似乎工作得更可靠:

ls *.gz | xargs -n 1 gunzip -t 2>&1 | cut -f 2 -d: - | xargs -t -n 1 rm
分解后,该管道表示:

  • ls*.gz
    :列出所有
    .gz
    文件
  • xargs-n1 gunzip-t2>&1
    :将该列表一次发送一个(
    -n1
    )到
    gunzip-t
    ,以测试输入
  • cut-f2-d:-
    :从
    gunzip
    的输出中提取文件名,这是由
    字符分隔的行的第二个字段(
    -f2
  • xargs-t-n1rm
    :将
    cut
    的输出一次发送到
    rm
    一个文件名,在运行时打印出进度(
    -t

当我用一个伪的
test.gz
测试它时,您的确切命令运行得很好,这个伪命令是用简单的
echo>test.gz
创建的。你需要提供更多关于问题的细节。是否显示任何错误消息?向
xargs rm
提供的输入是什么?如果您使用完全相同的输入手动调用
xargs rm
,会发生什么情况?当存在多个损坏的输入文件时,似乎会出现问题。但是,如果数据有价值,您是否尝试过gzrecover?@RicardoBranco否,但这很有意义。在我的例子中,错误是由中断的下载引起的。使用
gzrecover
可以节省不必要的下载。