2017-03-03 209 views
-1

正是我想要实现的比标题建议更复杂,但我想保持它合理的短。我试图做以下事情; (我对bash还很陌生)将文件从一个目录复制到另一个目录

“获取名称作为参数给出的图像目录,例如目录XXX,并生成另一个目录,其名称作为另一个参数给出,该目录包含这些图像的副本,但是大小的一半(线性维度)。“

我试图用下面的脚本来做到这一点。

#!/bin/bash 

if [ "$1" != "" ]; then  
    orgdir$1 
fi 
if [ "$2" != "" ]; then  
    cpydir=$2  
fi  
find "${orgdir}" | while read -r file 
do  
    filesize=$(wc -c <"$orgdir$file") 
    dd if=$orgdir of=$cpydir bs=$(($filesize/2)) 
done 

在终端运行./script.sh ./Test ./TestMove我得到以下错误。

line 11 ./Test./Test: No such file or directory. 

我已经试过刚开$文件的WC -c但说厕所需要的目录作为标准输入

和;

line 12 ""/2: syntax error: operand expected (error token is """/2") 

大概是因为文件大小没有被赋予正确的值吗?

我也不确定使用dd复制文件,一半大小是最好的方法,但我无法找到任何其他人。

+1

复制的图像文件的一半的字节可能不会产生有效的图像。 – chepner

+0

是的,当我第一次阅读任务时,我在想。我不确定我是否想要复制它的一半或压缩它是诚实的。后者可能吗? – Chaz

+1

如果他的字面意思是“将300x300图像转换为150x150图像”,那么您需要使用能够理解文件格式的程序。 – chepner

回答

1

你可以做到这一点从它安装在大多数Linux发行版的ImageMagick的套房一个命令:

cd "$1" && mogrify -path "$2" -resize 50% *.jpg 
相关问题