2017-03-03 3 views
-1

Genau das, was ich erreichen möchte, ist komplexer, als der Titel vermuten lässt, aber ich wollte es relativ kurz halten. Ich versuche folgendes zu tun; (Ich bin immer noch sehr neu zu bash)Kopieren von Dateien von einem Verzeichnis in ein anderes

"Nehmen Sie ein Verzeichnis von Bildern, deren Name als Argument angegeben ist, wie das Verzeichnis XXX, und das erzeugt ein anderes Verzeichnis, dessen Name als ein anderes Argument angegeben ist, enthält Kopien dieser Bilder, aber die sind halb so groß (in linearen Dimensionen). "

Ich habe versucht, das mit dem folgenden Skript zu tun.

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

im Terminal als ./script.sh ./test ./TestMove Rennen, dass ich die folgenden Fehler bekommen.

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

Ich habe versucht, immer nur das wc -c von $ file aber das sagt WC Verzeichnis als Standardeingabe nimmt

und;

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

Vermutlich, weil die Dateigröße nicht den richtigen Wert erhält?

Ich bin auch nicht sicher, mit DD die Dateien zu kopieren und die Hälfte der Größe ist der beste Weg, aber ich bin nicht in der Lage, andere zu finden.

+1

Hälfte der Bytes einer Bilddatei kopieren wird wahrscheinlich nicht in einem gültigen Bild führen gehen . – chepner

+0

Ja, ich dachte das, als ich die Aufgabe zum ersten Mal las. Ich bin mir nicht sicher, ob ich die Hälfte davon kopieren oder komprimieren soll, um ehrlich zu sein. Ist das möglich? – Chaz

+1

Wenn er wörtlich "ein 300x300 Bild in ein 150x150 Bild verwandeln" bedeutet, dann müssen Sie ein Programm verwenden, das das Format der Datei versteht. – chepner

Antwort

1

Sie können mit einem einzigen Befehl von der ImageMagick Suite zu tun, dass die auf den meisten Linux-Distributionen installiert ist:

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