Zum Inhalt springen

Wer kennt einen Befehl der gleichzeitig...


schnei

Empfohlene Beiträge

Hi!

Wer kennt einen Befehl der gleichzeitig kopiert und umbenennt?

Die Problemstellung ist folgende:

Alle Dateien auf einer CD sollen auf Platte kopiert werden und dabei gleichzeitig in großbuchstaben umgewandelt werden.

Bsp.: cdrom/file1.tar --> /home/test/FILE1.TAR

Aber jetzt kommt mir bitte keiner mit mv! Es sind mehrere tausend files!

Die Variante erst mit "cp" zu kopieren und anschließend per schleife mit "tr" kenn ich. Es gibt aber noch eine andere!!!

Ist zwar völlig unrelevant, aber das ganze soll auf nem SLES 8.1 - Server passieren.

Gruß

David

Link zu diesem Kommentar
Auf anderen Seiten teilen

Aber jetzt kommt mir bitte keiner mit mv! Es sind mehrere tausend files!

Die Variante erst mit "cp" zu kopieren und anschließend per schleife mit "tr" kenn ich. Es gibt aber noch eine andere!!!

Ist zwar völlig unrelevant, aber das ganze soll auf nem SLES 8.1 - Server passieren.

Gruß

David

Doch ich komme mit mv ;)

Selber basteln ist angesagt - Shellskript *grins*


#! /bin/bash

#

# change all files from current dir on to uppercase

#


level()

{

    local f

    for f in *; do

        if test -d $f; then

             pushd $f >&/dev/null

             level

             popd >&/dev/null

        fi

        g="$(echo $f | tr 'a-z' 'A-Z')"

        echo mv $f $g

    done

}


#set -x

level

exit 0

so die Ausgabe ist dann folgende (Ich hab das Skript UPPERCASE genannt, im Ordner /testordner gibt es z.B. die Dateien file1.tar und file2.tar):

user@host:/testordner~> ./UPPERCASE

mv file1.tar FILE1.TAR

mv file2.tar FILE2.TAR

so wenn du die mv-Kommandos nicht alle einzeln in die Maus packen (copy&paste) und ausführen willst, dann mach bei dem Skript einfach das "echo" vor mv $f $g weg. Nicht vergessen das Skript mit dem Kommando "chmod 755 <skriptname>" ausführbar zu machen.

Also kopier das zeugs auf Platte in ein Verzeichnis Deiner Wahl und dann wechselst du in das Verzeichnis und sagst ./UPPERCASE und zack... :marine

Kannst es ja mit 1-2 Testdateien ausprobieren..

Bei Problemen -> posten ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi!

Ich würd's mit nem PHP-Shell-Script machen, ungefähr so:


#!/<Pfad zum PHP-Binary>/php

$src = '/cdrom';
$dest = '/hier/solls/hin';

$d = dir($src);
while (false !== ($entry = $d->read())) {
if ($entry != '.' && $entry != '..') {
echo "Kopiere ".$src."/".$entry." nach ".$dest."/".strtoupper($entry)."\n";
copy ($src.'/'.$entry, $dest.'/'.strtoupper($entry));
}
}
$d->close();
echo "Fertig!\n";
[/PHP]

Gruß, Tobias

Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstmal vielen Dank für deine mühe! Werds mal ausprobieren!

Soviel ich weiß, gibt es aber bei irgendeinem Befehl einen entsprechenden Parameter, der das alles auch macht.

Also ein Befehl, ein Parameter und alles ist kopiert und umbenannt (klein -> groß)

Gruß

David

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi!

Hier ist die wohl einfachste Methode um Dateien von A nach B zu kopieren, und sie gleichzeitig in Grossbuchstaben umzubenennen.

Klappt leider nur mit Dateinamen die max. 8.3 Zeichen haben. Aber wie der Zufall es will, sind auf der CD sowieso nur entsprechende Files.

cd /mnt

mkdir cdrom

mount -r -t iso9660 -o map=off /dev/cdrom /mnt/cdrom

cd /home/test

cp -R /mnt/cdrom .

Gruß

David & BussiBär

Link zu diesem Kommentar
Auf anderen Seiten teilen

Escaped die Bash bei sowas auch Leerzeichen?

Die Stelle ist nicht das Problem....eigentlich ja, doch dazu müssen die Werte der Variablen in Doppelhochkomma eingeschlossen werden...

Verbesserter Code:


#! /bin/bash

#

# change all files from current dir on to uppercase

#


level()

{

    local f

    for f in *; do

        if test -d "$f"; then

             pushd "$f" >&/dev/null

             level

             popd >&/dev/null

        fi

        g="$(echo "$f" | tr '[:lower:]' '[:upper:]')"

        echo mv "$f" "$g"

    done

}


#set -x

level

exit 0

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Monate später...

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...