schnei Geschrieben 27. Mai 2004 Geschrieben 27. Mai 2004 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 Zitieren
Schlaubi Geschrieben 27. Mai 2004 Geschrieben 27. Mai 2004 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 Zitieren
tobias-digital Geschrieben 27. Mai 2004 Geschrieben 27. Mai 2004 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 Zitieren
schnei Geschrieben 27. Mai 2004 Autor Geschrieben 27. Mai 2004 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 Zitieren
schnei Geschrieben 27. Mai 2004 Autor Geschrieben 27. Mai 2004 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 Zitieren
Nachtgeist Geschrieben 27. Mai 2004 Geschrieben 27. Mai 2004 Doch ich komme mit mv for f in *; do Escaped die Bash bei sowas auch Leerzeichen? g="$(echo $f | tr 'a-z' 'A-Z')" Du solltest besser tr '[:lower:]' '[:upper:]' verwenden ... (z.B. wegen Umlauten) Zitieren
Schlaubi Geschrieben 27. Mai 2004 Geschrieben 27. Mai 2004 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 Zitieren
The1 Geschrieben 11. August 2004 Geschrieben 11. August 2004 Also ich würd das mit "cp -r cdrom/file1.tar /home/test/FILE1.TAR" machen. Ist meiner Meinung nach immernoch die einfachste Variante. Zitieren
CJunky Geschrieben 13. August 2004 Geschrieben 13. August 2004 kam zware schonmal aber egal... versuchs einfach mal mit: mv cdrom/file1.tar /home/test/FILE1.TAR das muesste funktionieren. c'ya CJ Zitieren
Empfohlene Beiträge
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.