PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : anhanf von Ordnergrösse eine Aktion ausführen



boba
22-02-2006, 20:50
HAllo,
ich habe hier verschiedene Ordner die ich in verschiedene vorgefertige images kopieren muss, ist der Ordner unter 1MB soll alles in Datei 1 kopiert werden, das ganze dann noch ein paar mal für andere grössen.
Kann man sowas realisieren?

Mich würde auch noch interresieren wie ich find dazu bringe den Punkt zu ignoriere, da zZ auch eine Aktion auf das root verzeichniss ausgeführt wird
danke

peschmae
22-02-2006, 21:50
Es ist im Fall voll nicht klar was du willst und wieso du das nicht einfach machst :)

MfG Peschmä

boba
22-02-2006, 22:04
naja ich möchte einem script die größe eines Ordners übergeben, diese script führt anhand der dieser Größe eine Aktion aus.
z.B.
es sind 2 Ordner vorhanden der erste ist 439kb groß,
der zweite 2,3MB.
das script soll dann für den ersten Ordner eine Datei nehmen, diese Mounten, den Inhalt des ersten Ordners hinein kopieren und wieder unmounten, dasselbe dann mit dem zweiten ordner.

Wichtig wäre erstmal wie ich die Information extrahieren kann und in mein bisheriges script einbauen kann.

reneeb
22-02-2006, 22:47
Welche Sprache??

in Perl ungefähr so:
#!/usr/bin/perl

use strict;
use warnings;

my $dir = $ARGV[0];
my $size = 0;

opendir(DIR,$dir) or die $!;
my @files = map{$dir.'/'.$_}grep{$_ !~ /^\.?\.$/}readdir(DIR);
closedir DIR;

for my $file(@files){
$size += -s $file;
}

if($size > 1048576){
# tu was Du willst
}

boba
23-02-2006, 06:53
war wohl ein wenig daneben gestern, sorry.
Das script läuft in der Bash

peschmae
23-02-2006, 08:02
Ordnergrösse in Kilobytes gibts mit
SIZE=$(du -s ORDNER | awk '{print $1}')

Dann kannst du mit
if [ $SIZE > 124348 ]; then

was machen oder so.

MfG Peschmä

boba
23-02-2006, 08:50
sieht ganz gut aus, aber irgentwo hängt es nocht:



#!/bin/bash
#

find -maxdepth 1 -type d | while read dir; do

SIZE=$(du -s "$dir" | awk '{print $1}')

if [ "$SIZE" > "1243" ]; then
echo "$dir ist grösser als 1MB"
echo "$SIZE"
else
echo "$dir ist kleiner als 1MB"
fi

done
exit 0


und es wird noch der Punkt als verzeichniss gewertet :(


. ist grösser als 1MB
19128
./Ordner1 ist grösser als 1MB
1812
./Ordner11 ist grösser als 1MB
1348
./Ordner2 ist grösser als 1MB
20
./Ordner3 ist grösser als 1MB
8
Wie man sieht scheint die if abfrage nicht so ganz zu klappen

ninguno
23-02-2006, 12:18
probiers mal so
if (( "$SIZE" > "1243" )); then

boba
23-02-2006, 15:16
perfekt, saucool ist das.

vielen dank