指定关键字时解压缩失败



我需要解开匹配名称中特定关键字的文件。一个典型的文件将看起来像:

JGS-Memphis~PSU~FVT~00000~JGM96911~1~P~1100~EPS10R0-15~CL10D1120A3271~0121017~141645.XML

当我做

unzip -o SOMEFILE.zip '*~PSU~*' -d psutmp/

它毫无问题地从SOMEFILE.zip解开上述文件。但是当我做

for i in `find . -name '*zip'`; do  unzip -o "$i" '*PSU*' -d psutmp/ ; done

filename not matched: '*PSU*'错误失败。我尝试删除PSU周围的tick痕。同样的问题。

我还尝试了 -C选项以匹配文件名case-insenticality

for i in `find . -name '*XML*zip'`; do  unzip -o "$i" -C *PSU* -d psutmp/ ; done

它失败了

error:  cannot create psutmp/JGS-Memphis~PSU~FVT~00000~JGM96911~1~P~1100~EPS10R0-15~CL10D1120A3271~0121017~141645.XML

这是铺位。我是具有150GB存储空间的开发计算机的根用户。容量为12%。我想念什么?

删除 '*P5U*'中的后挡。您不需要逃脱单引号。

for i in `find . -name '*zip'`; do  unzip -o "$i" '*PSU*' -d psutmp/ ; done

在for循环中使用Backticks有点像代码气味。我会尝试其中之一:

# Unzip can interpret wildcards itself instead of the shell
# if you put them in quotes.
unzip -o '*.zip' '*PSU*' -d psutmp/
# If all of the zip files are in one directory, no need for find.
for i in *.zip; do unzip -o "$i" '*PSU*' -d psutmp/; done
# "find -exec" is a nice alternative to "for i in `find`".
find . -name '*.zip' -exec unzip -o {} '*PSU*' -d psutmp/ ;

就错误而言,psutmp/是否存在?是否设置了权限,因此您可以写信?

相关内容

  • 没有找到相关文章