[geloest] Dateien in umgekehrter Reihenfolge kopieren?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
xfon
Beiträge: 139
Registriert: 18.01.2004 19:33:56
Kontaktdaten:

[geloest] Dateien in umgekehrter Reihenfolge kopieren?

Beitrag von xfon » 18.01.2005 14:18:01

Hallo,

ich muss, da mein neuer mp3player mit den daten in umgekehrter Reihenfolge bespielt werden muss, damit ich sie spaeter in der korrekten Reihenfolge anhoeren kann, daten nach dem Muster Z - A / 9 - 0 kopieren.

Dazu haette ich folgendes Script angelegt:

Code: Alles auswählen

for file in $(ls -1 | sort -r)
do
  cp $file /mnt/usb/
done
Problem dabei ist nur, dass in den Dateinamen auch Leer bzw Sonderzeichen enthalten sind, und die Ausgabe mit ls dadurch nicht uebernommen werden kann.

Jetzt suche ich eine moeglichkeit, entweder per sed/awk oder etwas aehnlichem den noetigen "\" hinzuzufuegen, vor Sonderzeichen etc.
Oder eben ein anderes Tool als ls, mit dem ich das ganze schon so ausgegeben bekomme, dass die Ausgabe dieses "\" bereits enthaelt.

besten dank

Habe im uebrigen schon Kontakt mit dem Hersteller aufgenommen, ob man das ganze nicht auch anders loesen kann, denn ein derartiges Geraet muesste doch wohl in der Lage sein die Daten einfach nach dem Alphabet zu sortieren, wie ich finde.
Zuletzt geändert von xfon am 18.01.2005 17:11:57, insgesamt 1-mal geändert.

Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

Beitrag von mistersixt » 18.01.2005 14:57:40

Vielleicht einfach $file in Hochkommata einbetten? Es geht ja zum Beispiel auch ein:

Code: Alles auswählen

touch "/tmp/Datei mit Leerzeichen"
Gruss, mistersixt.
--
System: Debian Bookworm, 6.11.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 3.8 Ghz., Radeon RX 5700 XT, 32 GB Ram, XFCE

DeletedUserReAsG

Beitrag von DeletedUserReAsG » 18.01.2005 14:58:43

Die Leer- und Sonderzeichen kannst du mitnehmen, indem du deine Variable in "" setzt:

Code: Alles auswählen

for file in $(ls -1 | sort -r)
do
  cp "$file" /mnt/usb/
done 
in etwa

cu
niemand

(da war wer schneller ;))

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 18.01.2005 16:11:57

mein Vorschlag:

Code: Alles auswählen

ls -Xr | while read file; do cp "$file" "to$file"; done

xfon
Beiträge: 139
Registriert: 18.01.2004 19:33:56
Kontaktdaten:

Beitrag von xfon » 18.01.2005 17:11:19

das waer natuerlich eleganter :D

hab das ganze jetz so geloest:

Code: Alles auswählen

#!/bin/bash
# muvo.sh
mkdir /mnt/usb/"$1"
COUNT=1
LINES=`ls -1 | wc -l`
while (( $COUNT <= $LINES ))
do
  FILE=`ls -1 "$1" | tail -$COUNT | head -1`
  cp "$1"/"$FILE" /mnt/usb/"$1"/"$FILE"
  COUNT=`expr $COUNT + 1`
done
und dann eben einfach im directory mid den alben

$muvo.sh ALBUM

.. geht gut :D

thx fuer die tipps!

Antworten