【发布时间】:2017-05-15 04:52:26
【问题描述】:
这是我的命令行:
find . -type f -exec file {} \; \
| sed 's/\(.*png\): .* \([0-9]* x [0-9]*\).*/\2 \1/' \
| sed 's/\(.*jpg\): .* \([0-9]*x[0-9]*\).*/\2 \1/' \
| awk 'int($1) < 1000' \
| sed 's/^.*[[:blank:]]//' \
| tar -czvf images.tar.gz --null -T -
我得到的错误是:
tar: Unix\n./test.png\n./test2.jpg\n: 无法统计: 没有这样的文件或 目录
tar:由于先前的错误而以失败状态退出
我想要的是在当前目录中找到所有宽度小于 1000 像素的图像并将它们压缩到存档中。
【问题讨论】:
-
为什么在
tar命令中添加--null? -
错误消息包括
\n,它几乎总是“换行”字符。奇怪的是它在那里,你的代码中似乎没有任何东西在创建它。您确定错误消息与代码匹配吗?此外,您可以使用find ... | awk ... | tar ...来解决问题。您可以在awk的一个实例中进行多次替换,并打印/测试$2 而不是$1。 (以及稍后的其他非最佳内容)。大概,你一次建立了这个 cmd 1 个附加项?如果没有,请返回再添加 1 个管道并研究之前所做的更改。为什么不find -name '*.jpg' -o -name '*png'? -
@shellter: 因为
--null,tar期望文件名是\0-分隔的。 -
@gniourf_gniourf : 你在回复 melpomene 吗?
-
@shellter:不,给你
:)。祝你好运;).