BlackBoard (http://www.black-board.net/index.php)
- Computerecke (http://www.black-board.net/board.php?boardid=30)
-- Betriebssysteme (http://www.black-board.net/board.php?boardid=11)
--- Linux Script um "?" und "!" aus Dateinamen zu entfernen (http://www.black-board.net/thread.php?threadid=15776)


Geschrieben von Menetekel23 am 31.01.2004 um 21:16:

  Script um "?" und "!" aus Dateinamen zu entfernen

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



Geschrieben von Black Star am 01.02.2004 um 01:32:

 

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.



Geschrieben von Menetekel23 am 01.02.2004 um 07:54:

 

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.



Geschrieben von Misel am 01.02.2004 um 23:19:

 

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.



Geschrieben von Menetekel23 am 08.02.2004 um 12:39:

 

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.



Geschrieben von alamar am 09.02.2004 um 13:37:

 

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



Geschrieben von Menetekel23 am 09.02.2004 um 14:11:

 

Ist das rekursiv Almar?


Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH