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.
Copie la moitié des octets d'un fichier d'image est probablement ne va pas conduire à une image valide . – chepner
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
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