如何用一行GNU Parallel命令同时下载并压缩JPEG文件?
一行命令实现下载+即时压缩
当然可以用一行命令搞定,而且比你原来的步骤更高效,还能避免生成中间列表文件的麻烦:
parallel -j 72 'wget {} && gzip "$(basename {})"' < http_list
说明:
- 直接让
parallel读取http_list里的每个URL,不用多余的cat(parallel本身支持从文件读输入) -j 72保持你原来的并发数,同时处理72个任务- 每个URL先执行
wget {}下载,只有下载成功(&&控制)才会执行后续的gzip压缩 $(basename {})用来提取URL对应的文件名,确保压缩的就是刚下载的那个jpeg文件,双引号包裹是为了兼容文件名带空格或特殊字符的情况
另外提一句:你原来用ls -al *.jpeg | awk '{print $NF}'生成文件列表的方式有坑——如果文件名里有空格,awk会把文件名拆成多段,导致后续压缩出错,用上面的方法就完全没这个问题。
内容的提问来源于stack exchange,提问作者Paolo Lorenzini
相关产品推荐
相关产品推荐

