~Gh05t~
16-12-2009, 14:12
Hallo zusammen,
ich möchte alle Dateien eines Verzeichnisses in ein anderes verlinken. Problem an der Sache ist, dass die Dateien Leer- und Sonderzeichen enthalten (als Beispiel die Datei meine, test & datei ).
Dazu habe ich verschiedene Sachen probiert, hier mal zwei meiner Lösungen:
linkdir.sh
#!/bin/bash
DIR=/mein/verzeichnis
find $DIR -maxdepth 1 -type f | while read file; do
# ln -s $(printf '%q' $file) $(printf '%q' $(basename "$file")) # Lösung 1
ln -s \'$file\' \'$(basename "$file")\' # Lösung 2
done
Lösung 1 resultiert in
# ./linkdir.sh
# ls -l
...
lrwxrwxrwx 1 gh05t users 25 2009-12-16 14:45 meine\,test\&datei -> /mein/verzeichnis/meine\,test\&datei
Lösung 2 resultiert in
# ./linkdir.sh
# ls -l
lrwxrwxrwx 1 gh05t users 25 2009-12-16 14:47 'meine, test & datei' -> '/mein/verzeichnis/meine, test & datei'
Seltsamerweise funktioniert Lösung 2 wenn ich es auf der konsole ausführe:
# ln -s '/mein/verzeichnis/meine, test & datei' 'meine, test & datei'
# ls -l
lrwxrwxrwx 1 gh05t users 25 2009-12-16 14:49 meine, test & datei -> /mein/verzeichnis/meine, test & datei
Hat jemand eine Idee wie ich das mache?
ich möchte alle Dateien eines Verzeichnisses in ein anderes verlinken. Problem an der Sache ist, dass die Dateien Leer- und Sonderzeichen enthalten (als Beispiel die Datei meine, test & datei ).
Dazu habe ich verschiedene Sachen probiert, hier mal zwei meiner Lösungen:
linkdir.sh
#!/bin/bash
DIR=/mein/verzeichnis
find $DIR -maxdepth 1 -type f | while read file; do
# ln -s $(printf '%q' $file) $(printf '%q' $(basename "$file")) # Lösung 1
ln -s \'$file\' \'$(basename "$file")\' # Lösung 2
done
Lösung 1 resultiert in
# ./linkdir.sh
# ls -l
...
lrwxrwxrwx 1 gh05t users 25 2009-12-16 14:45 meine\,test\&datei -> /mein/verzeichnis/meine\,test\&datei
Lösung 2 resultiert in
# ./linkdir.sh
# ls -l
lrwxrwxrwx 1 gh05t users 25 2009-12-16 14:47 'meine, test & datei' -> '/mein/verzeichnis/meine, test & datei'
Seltsamerweise funktioniert Lösung 2 wenn ich es auf der konsole ausführe:
# ln -s '/mein/verzeichnis/meine, test & datei' 'meine, test & datei'
# ls -l
lrwxrwxrwx 1 gh05t users 25 2009-12-16 14:49 meine, test & datei -> /mein/verzeichnis/meine, test & datei
Hat jemand eine Idee wie ich das mache?