2017-03-03 2 views
-1

Ce que j'essaie de réaliser est plus complexe que ne le suggère le titre, mais je voulais le garder raisonnablement court. J'essaie de faire ce qui suit; (Je suis encore très nouveau pour bash)Copier des fichiers d'un répertoire dans un autre

"Prendre un répertoire d'images dont le nom est donné en argument, tel que le répertoire XXX, et qui produit un autre répertoire, dont le nom est donné comme un autre argument, qui contient copies de ces images, mais qui sont la moitié de la taille (en dimensions linéaires). "

J'ai essayé de le faire avec le script suivant.

#!/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 

Course à dans le terminal comme ./script.sh ./test ./TestMove je reçois les erreurs suivantes.

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

J'ai essayé simplement obtenir le -c wc de fichier $, mais qui dit wc prend répertoire comme entrée standard

et;

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

Vraisemblablement parce que la taille de fichier n'est pas donnée la valeur correcte?

Je ne suis pas sûr d'utiliser dd pour copier les fichiers et la moitié de la taille est le meilleur moyen, mais je ne suis pas en mesure d'en trouver d'autres.

+1

Copie la moitié des octets d'un fichier d'image est probablement ne va pas conduire à une image valide . – chepner

+0

Oui, je pensais que quand j'ai lu la tâche pour la première fois. Je ne suis pas sûr si je suis censé copier la moitié ou le compresser pour être honnête. Ce dernier est-il possible? – Chaz

+1

S'il veut littéralement "transformer une image 300x300 en une image 150x150", alors vous devez utiliser un programme qui comprend le format du fichier. – chepner

Répondre

1

Vous pouvez le faire avec une seule commande de la ImageMagick suite qui est installé sur la plupart des distributions Linux:

cd "$1" && mogrify -path "$2" -resize 50% *.jpg