2017-03-03 22 views
-1

私が達成しようとしていることは、タイトルよりも複雑ですが、合理的に短くしたいと思いました。私は次のことを試みています。あるディレクトリから別のディレクトリにファイルをコピーする

"ディレクトリ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を取得しようとしたが、それは、wcが、標準入力

としてディレクトリを取ると言います。

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 
関連する問題