BlackBoard » Computerecke » Betriebssysteme » Linux Script um "?" und "!" aus Dateinamen zu entfernen » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Script um "?" und "!" aus Dateinamen zu entfernen
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Menetekel23
gezählt, gewogen, zerteilt


images/avatars/avatar-1999.jpg

Dabei seit: 22.05.2003
Beiträge: 296
Herkunft: /dev/null

Script um "?" und "!" aus Dateinamen zu entfernen       Zum Anfang der Seite springen

Hallo
Leider kennt FAT kein "?" und "!" in Dateinamen und somit schlägt das Kopieren von Dateien in denen diese Zeichen enthalten sind von ext2 fehl.
Deshalb suche ich ein shell-script, welches diese Zeichen entfernt oder am besten durch eine Variable meiner Wahl ersetzt.
Cu Menetekel23

__________________
If the world didn't suck a little bit, we'd all fall off.
__________________________________________
Höre die Worte des Allmächtigen:
cat /usr/src/linux/arch/i386/boot/bzImage > /dev/dsp
31.01.2004 21:16 Menetekel23 ist offline E-Mail an Menetekel23 senden Beiträge von Menetekel23 suchen
Black Star Black Star ist männlich
Der Pate [Admin]


images/avatars/avatar-2158.jpg

Dabei seit: 11.12.2001
Beiträge: 2.282
Herkunft: /dev/stderr

      Zum Anfang der Seite springen

ungetestet und grad aus dem Kopf gedrueckt:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
#!/bin/bash
source="/foo"
dest="/bar"
# run directories
for i in `find $source -type d -exec echo \{\} \; | sed -e "s/ /%%blank%%/g"`;  do
    # create subdir
    new_dir="`echo $i | sed -e 's/%%blank%%/ /g' | sed -e 's/?/X/g' | \
        sed -e 's/!/Y/g'`"
    source_dir="`echo $i | sed -e 's/%%blank%%/ /g'`"
    echo ">>> creating ${dest}/$new_dir"
    mkdir "`echo '${dest}/$new_dir'`"
    # run files
    cd "$source/$source_dir"
    for j in `find . ! -type d -mindepth 1 -maxdepth 1 -exec echo \{\} \; | sed -e "s/ /%%blank%%/g"`; do
        new_filename="`echo $j | sed -e 's/%%blank%%/ /g' | sed -e 's/?/X/g' | \
            sed -e 's/!/Y/g'`"
        source_file="`echo $j | sed -e 's/%%blank%%/ /'`"
        cp -v "`echo '$source/$source_dir/$source_file'`" \
            "`echo '$dest/$dest_dir/$new_file'`"
    done     
    cd -
done

Es ist spaet und ich hab mir das grad aus dem kopf gedrueckt. Kann sein, dass es so geht, kann sein, dass es ganz verkehrt ist.
Aber als Anfang sollte es genuegen.

__________________
vescere bracis meis

01.02.2004 01:32 Black Star ist offline E-Mail an Black Star senden Homepage von Black Star Beiträge von Black Star suchen
Menetekel23
gezählt, gewogen, zerteilt


images/avatars/avatar-1999.jpg

Dabei seit: 22.05.2003
Beiträge: 296
Herkunft: /dev/null

Themenstarter Thema begonnen von Menetekel23
      Zum Anfang der Seite springen

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
Dealer:/# ls foo/
mtoo23.bla  mtoo23lare?.bla  ?too23.bla  ?too.bla
Dealer:/# ls bar/
Dealer:/# rename4fat.sh
>>> creating /bar//foo
mkdir: kann Verzeichnis »»${dest}/$new_dir«« nicht anlegen: Datei oder Verzeichnis nicht gefunden
/bin/rename4fat.sh: cd: /foo//foo: Datei oder Verzeichnis nicht gefunden
cp: Aufruf von stat für »$source/$source_dir/$source_file« nicht möglich: Datei oder Verzeichnis nicht gefunden
cp: Aufruf von stat für »$source/$source_dir/$source_file« nicht möglich: Datei oder Verzeichnis nicht gefunden
cp: Aufruf von stat für »$source/$source_dir/$source_file« nicht möglich: Datei oder Verzeichnis nicht gefunden
/bin/rename4fat.sh: cd: OLDPWD not set
Dealer:/# ls bar/
Dealer:/#


Funzt leider nicht.

__________________
If the world didn't suck a little bit, we'd all fall off.
__________________________________________
Höre die Worte des Allmächtigen:
cat /usr/src/linux/arch/i386/boot/bzImage > /dev/dsp

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Menetekel23: 01.02.2004 07:54.

01.02.2004 07:54 Menetekel23 ist offline E-Mail an Menetekel23 senden Beiträge von Menetekel23 suchen
Misel Misel ist männlich
Hüter des Kitkat


images/avatars/avatar-2084.png

Dabei seit: 02.11.2002
Beiträge: 1.203
Herkunft: live://home.berlin.d e

      Zum Anfang der Seite springen

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
#!/bin/bash
if [ "x${1}" == "x" ]
then blubb="_";
else blubb=${1};
fi

if [ "x${2}" == "x" ]
then new_dir="renamed";
else new_dir=${2};
fi

echo "Erstelle ${new_dir}"
mkdir ${new_dir}

for old_name in `ls`
do
        new_name=`echo ${old_name} | sed -e "s/\?/${blubb}/g" | sed -e "s/\!/${blubb}/g"`;
        echo "\"${old_name}\" \"${new_dir}/${new_name}\""
       cp "${old_name}" "${new_dir}/${new_name}";
done


nachdem ich erfolglos versucht habe, Black-Star's Script zu verstehen, hab ich einfach mal selbst eins geschrieben. Es funktioniert, aber innerhalb von Grenzen und die Regularexpressions können bestimmt noch zusammengefasst werden, nur weiß ich net genau wie großes Grinsen

usage: scriptname.sh Ersatzzeichen(kette) neues_verzeichnis

function: Das Ding nimmt alle Dateien (Unterverzeichnisse werden übergangen, da es zu schicken Rekursionen kommen kann großes Grinsen ) aus dem aktuellen Verzeichnis, ersetzt ! und ? mit der Ersatzzeichenkette und kopiert sie in neues_verzeichnis, dass auch angelegt wird.

Limit: !foo und ?foo werden beide den selben Namen haben und demzufolge wird ein beim Kopieren dann überschrieben.

__________________
LAUFT! Ich spiele KILLERSPIELE!

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Misel: 01.02.2004 23:19.

01.02.2004 23:19 Misel ist offline E-Mail an Misel senden Homepage von Misel Beiträge von Misel suchen
Menetekel23
gezählt, gewogen, zerteilt


images/avatars/avatar-1999.jpg

Dabei seit: 22.05.2003
Beiträge: 296
Herkunft: /dev/null

Themenstarter Thema begonnen von Menetekel23
      Zum Anfang der Seite springen

Ich habe das Problem mit Cantus gelöst:
http://web222.mis02.de/debain.org/?session=&project=3
das kann auch mit Unterverzeichnissen umgehen, klappt aber nur mit Mp3's.

__________________
If the world didn't suck a little bit, we'd all fall off.
__________________________________________
Höre die Worte des Allmächtigen:
cat /usr/src/linux/arch/i386/boot/bzImage > /dev/dsp
08.02.2004 12:39 Menetekel23 ist offline E-Mail an Menetekel23 senden Beiträge von Menetekel23 suchen
alamar alamar ist männlich
Julian Seifert


images/avatars/avatar-1178.gif

Dabei seit: 26.05.2003
Beiträge: 34
Herkunft: coburg

      Zum Anfang der Seite springen

rename 's/(\?|\!)//g' *
so gehts auch Zunge raus

__________________
There are only 10 kind of people, the one who can do binary and the one who can`t.
09.02.2004 13:37 alamar ist offline E-Mail an alamar senden Homepage von alamar Beiträge von alamar suchen
Menetekel23
gezählt, gewogen, zerteilt


images/avatars/avatar-1999.jpg

Dabei seit: 22.05.2003
Beiträge: 296
Herkunft: /dev/null

Themenstarter Thema begonnen von Menetekel23
      Zum Anfang der Seite springen

Ist das rekursiv Almar?

__________________
If the world didn't suck a little bit, we'd all fall off.
__________________________________________
Höre die Worte des Allmächtigen:
cat /usr/src/linux/arch/i386/boot/bzImage > /dev/dsp
09.02.2004 14:11 Menetekel23 ist offline E-Mail an Menetekel23 senden Beiträge von Menetekel23 suchen
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
BlackBoard » Computerecke » Betriebssysteme » Linux Script um "?" und "!" aus Dateinamen zu entfernen

Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH