cabriofahrer
Well-Known Member
Meine Shellscriptkenntnisse sind leider sehr spärlich. Ich habe hier eine Fehlermeldung aus einem Kopierprozess im Terminal als Textdatei abgespeichert, aus der sich ergibt, welche Dateien nicht kopiert wurden. Es sind Bilddateien aus dem Speicher eines Mobiltelefons, welches per USB-Kabel mit dem PC verbunden war:
Insgesamt wurden 421 Dateien erfolgreich auf meine Festpaltte kopiert, der Vorgang hat relativ lang gedauert. Aus diesem Grund möchte ich nachträglich die nicht kopierten Dateien aus dieser Liste gezielt noch einmal kopieren. Warum der Vorgang bei diesen Dateien gescheitert ist, interessiert hier nicht.
Mein gedanklicher Ansatz wäre also, das Mobiltelefon nochmal anzuschließen und mit
Ich will hier also alle Bilddateien (IMG_....jpg) aus der Liste kopieren. Natürlich könnte ich jetzt diese Textdatei (copy_error_movil_susy.txt) editieren und alles löschen, was nicht Bilddateien sind, also cp, die Doppelpunkte, Text "Input/output error", und dann mit einem Copy aus dem Texteditor und einem Paste in das Terminal zum Ziel kommen, aber ich würde gerne wissen, wie das eleganter geht.
Im Prinzip möchte ich zunächst den ersten Schritt wissen: Wie kann ich konkrete Textstellen aus einer Datei (in diesem Fall die Dateinamen) mit der Kommandozeile anzeigen bzw. herausschreiben? Irgendetwas mit
cat Textdatei.txt (alles, was mit IMG anfängt und mit .jpg endet) > NeueTextdatei.txt
Noch eleganter wäre es natürlich, wenn man das Ganze in einem Schritt direkt in dem
Code:
$ cp *.* /home/werner/Pictures/Movil_Susy_2024/
cp: IMG_20231028_222311_BURST1.jpg: Input/output error
cp: IMG_20231028_222316_BURST1.jpg: Input/output error
cp: IMG_20231120_124718.jpg: Input/output error
cp: IMG_20231120_124726.jpg: Input/output error
cp: IMG_20231120_124734.jpg: Input/output error
cp: IMG_20231122_215156.jpg: Input/output error
cp: IMG_20231127_210512.jpg: Input/output error
cp: IMG_20240112_211655.jpg: Input/output error
cp: IMG_20240112_211704_BURST1.jpg: Input/output error
cp: IMG_20240112_211715.jpg: Input/output error
cp: IMG_20240112_211726_BURST1.jpg: Input/output error
cp: IMG_20240112_211736.jpg: Input/output error
cp: IMG_20240112_211803.jpg: Input/output error
cp: IMG_20240112_211846.jpg: Input/output error
cp: IMG_20240112_211849.jpg: Input/output error
cp: IMG_20240112_211954.jpg: Input/output error
cp: IMG_20240112_212017_BURST1.jpg: Input/output error
cp: IMG_20240112_212035.jpg: Input/output error
cp: IMG_20240112_212042.jpg: Input/output error
cp: IMG_20240113_194720.jpg: Input/output error
cp: IMG_20240113_194738.jpg: Input/output error
cp: IMG_20240113_194806.jpg: Input/output error
cp: IMG_20240113_201310.jpg: Input/output error
cp: IMG_20240114_132533.jpg: Input/output error
cp: IMG_20240114_132609.jpg: Input/output error
cp: IMG_20240114_132614.jpg: Input/output error
cp: IMG_20240121_020215.jpg: Input/output error
cp: IMG_20240121_020233.jpg: Input/output error
cp: IMG_20240121_020255.jpg: Input/output error
cp: IMG_20240214_115906.jpg: Input/output error
cp: IMG_20240214_115920.jpg: Input/output error
cp: IMG_20240214_115931.jpg: Input/output error
cp: IMG_20240214_115939.jpg: Input/output error
cp: IMG_20240214_115950_BURST1.jpg: Input/output error
cp: IMG_20240214_120003.jpg: Input/output error
cp: IMG_20240214_120146.jpg: Input/output error
cp: IMG_20240214_120159.jpg: Input/output error
cp: IMG_20240214_120258.jpg: Input/output error
cp: IMG_20240214_120313.jpg: Input/output error
cp: IMG_20240214_120459.jpg: Input/output error
Insgesamt wurden 421 Dateien erfolgreich auf meine Festpaltte kopiert, der Vorgang hat relativ lang gedauert. Aus diesem Grund möchte ich nachträglich die nicht kopierten Dateien aus dieser Liste gezielt noch einmal kopieren. Warum der Vorgang bei diesen Dateien gescheitert ist, interessiert hier nicht.
Mein gedanklicher Ansatz wäre also, das Mobiltelefon nochmal anzuschließen und mit
cp
gezielt nur die Dateien aus der Liste zu kopieren, da man mit cp
m.E. eine konkrete Gruppe von Dateien (z.B.: cp Datei1 Datei 4 Datei 9 ... Datei 35 /Zielordner
) kopieren kann.Ich will hier also alle Bilddateien (IMG_....jpg) aus der Liste kopieren. Natürlich könnte ich jetzt diese Textdatei (copy_error_movil_susy.txt) editieren und alles löschen, was nicht Bilddateien sind, also cp, die Doppelpunkte, Text "Input/output error", und dann mit einem Copy aus dem Texteditor und einem Paste in das Terminal zum Ziel kommen, aber ich würde gerne wissen, wie das eleganter geht.
Im Prinzip möchte ich zunächst den ersten Schritt wissen: Wie kann ich konkrete Textstellen aus einer Datei (in diesem Fall die Dateinamen) mit der Kommandozeile anzeigen bzw. herausschreiben? Irgendetwas mit
more
, cat
oder sed
nach dem Schema:cat Textdatei.txt (alles, was mit IMG anfängt und mit .jpg endet) > NeueTextdatei.txt
Noch eleganter wäre es natürlich, wenn man das Ganze in einem Schritt direkt in dem
cp
Befehl integrieren könnte, also "Lese mir alle Textstellen, die mit "IMG" beginnen und mit ".jpg" enden zunächst aus und füge sie in den Befehl "cp .... /Zielordner" ein.