staging.inyokaproject.org

Umlaute/Dateien und Ordner umbenennen

Status: Gelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

tomy38

Anmeldungsdatum:
18. Januar 2019

Beiträge: Zähle...

Hallo,

ich verwende folgenden Skript um in Dateien und Ordner die Umlaute und Sonderzeichen umzubenennen.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/bin/bash
#Ordner
find -depth -type d -execdir rename -v 's/Ä/Ae/g;
s/\s/_/g;
s/Ö/Oe/g;
s/Ü/Ue/g;
s/ä/ae/g;
s/à/a/g;
s/è/e/g;
s/é/e/g;
s/ö/oe/g;
s/ü/ue/g;
s/ß/ss/g;
s/@/at/g;
s/\?/-/g;
s/\"/-/g;
s/\[/-/g;
s/\]/-/g;
s/\302\201/ue/g;
s/\302\204/ae/g;
s/\302\224/oe/g;
s/\201/ue/g;
s/\224/oe/g;
s/\204/ae/g;
s/\232/Ue/g;
s/\207/./g;
s/\200/./g;
s/�/ae/g;
s/�/oe/g;
s/ /_/g;
s/,/_/g;
s/\)/-/g;
s/\(/-/g;
s/\:/-/g;
s/\&/und/g;
s/\+/und/g;
s/\x27/_/g;
' '{}' \;
#Datei
find . -type f -exec rename -v 's/Ä/Ae/g;
s/\s/_/g;
s/Ö/Oe/g;
s/Ü/Ue/g;
s/ä/ae/g;
s/à/a/g;
s/è/e/g;
s/é/e/g;
s/ö/oe/g;
s/ü/ue/g;
s/ß/ss/g;
s/@/at/g;
s/\?/-/g;
s/\"/-/g;
s/\[/-/g;
s/\]/-/g;
s/\302\201/ue/g;
s/\302\204/ae/g;
s/\302\224/oe/g;
s/\201/ue/g;
s/\224/oe/g;
s/\204/ae/g;
s/\232/Ue/g;
s/\207/./g;
s/\200/./g;
s/�/ae/g;
s/�/oe/g;
s/ /_/g;
s/,/_/g;
s/\)/-/g;
s/\(/-/g;
s/\:/-/g;
s/\&/und/g;
s/\+/und/g;
s/\x27/_/g;
' '{}' \;

Leider wird beim umbenennen der Ordner folgende Fehlermeldung ausgegeben und die Ordner nicht umbenannt.

Fehlermeldung:

find: Fehlendes Argument für »-execdir«.

Das Umbenennen der Dateien funktioniert reibungslos.

Welchen Gedankenfelder habe ich im Skript?

Gruß Thomas

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Moin,

zeige mal bitte die $PATH-Variable des ausführenden Nutzers. Die sollte aus absoluten Pfadangaben bestehen. Funktioniert es denn, wenn du nur exec anstatt execdir verwendest?

tomy38

(Themenstarter)

Anmeldungsdatum:
18. Januar 2019

Beiträge: Zähle...

Hallo ChickenLipsRfun2eat,

mit exec funktioniert es auch nicht.

Hier mal meine $PATH-Variable, ich hoffe ich habe das richtige erwischt ☺

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games"
fi
export PATH

if [ "${PS1-}" ]; then
  if [ "${BASH-}" ] && [ "$BASH" != "/bin/sh" ]; then
    # The file bash.bashrc already sets the default PS1.
    # PS1='\h:\w\$ '
    if [ -f /etc/bash.bashrc ]; then
      . /etc/bash.bashrc
    fi
  else
    if [ "`id -u`" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done

Gruß Thomas

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Ein einfaches

echo $PATH

hätte auch gereicht ☺

Habe gerade mal damit rumexperimentiert und finde für die Ordner auch keine schnelle Lösung. Mein Ansatz mit sed gab auch nur eine Fehlermeldung ("sed: -e Ausdruck #1, Zeichen 167: Ungültiger Rückverweis"). Ich überlasse das Feld erst mal den anderen… ☺

tomy38

(Themenstarter)

Anmeldungsdatum:
18. Januar 2019

Beiträge: 7

So ich habe es nun soweit hinbekommen.

Habe den 1. Teil des Scriptes weggelassen und bei den Dateien noch das Kriterium -type f entfernt nun werden die Ordner auch umbenannt.

Jetzt muss ich es nur noch schaffen es in einer Schleife durchlaufen zu lassen.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

tomy38 schrieb:

So ich habe es nun soweit hinbekommen.

Ist das Thema also gelöst?

Jetzt muss ich es nur noch schaffen es in einer Schleife durchlaufen zu lassen.

Wieso in einer Schleife?

tomy38

(Themenstarter)

Anmeldungsdatum:
18. Januar 2019

Beiträge: 7

Hallo,

ja das Thema ist gelöst.

Eine Schleife habe ich nun nicht benötigt.

Hier noch mein Code:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/bin/bash
###########################################################
echo Umlaute aendern 192.168.178.119
echo Datei und Unterordner umbenennen
find /home/pi/Nas/ -depth -exec rename -v 's/Ä/Ae/g;
s/\s/_/g;
s/Ö/Oe/g;
s/Ü/Ue/g;
s/ä/ae/g;
s/à/a/g;
s/è/e/g;
s/é/e/g;
s/ö/oe/g;
s/ü/ue/g;
s/ß/ss/g;
s/@/at/g;
s/\?/-/g;
s/\"/-/g;
s/\[/-/g;
s/\]/-/g;
s/\337/ss/g;
s/\302\201/ue/g;
s/\302\204/ae/g;
s/\302\224/oe/g;
s/\374/ue/g;
s/\201/ue/g;
s/\224/oe/g;
s/\204/ae/g;
s/\344/ae/g;
s/\232/Ue/g;
s/\334/Ue/g;
s/\326/Oe/g;
s/\207/./g;
s/\200/./g;
s/�/ae/g;
s/�/oe/g;
s/ /_/g;
s/,/_/g;
s/_-_/_/g;
s/\)/-/g;
s/\(/-/g;
s/\:/-/g;
s/\&/und/g;
s/\+/und/g;
s/\x27/_/g;
' '{}' \;
Antworten |