Start   Impressum   Lizenz         online lesen   Download         Online-Shop   Jumping Blue Turtle

Debian für Unternehmer - Debian-Know-how

4300: Der "find"-Befehl

Wenn Sie von Debian Sarge nach Debian Etch migrieren, sollten Sie alle ihre bestehenden Shell-Skripte überprüfen, die einen find-Befehl beinhalten. Der Grund: Seit Debian Etch nervt der find-Befehl mit einer unschönen Fehlermeldung:

find: warning: you have specified the -maxdepth option after a non-option
argument !, but options are not positional (-maxdepth affects tests
specified before it as well as those specified after it).  Please specify
options before other arguments.

Dem können Sie abhelfen, indem Sie die Parameter ! und -maxdepth miteinander vertauschen.

Beispiel 1

Ein Shell-Script namens count_directory.sh enthält einen find-Befehl.

Vorher
find\
 ${1}\
 \!\
 -maxdepth 100\
 -type d\
 -name '*.html'\
 -exec ./3distribute.sh {} ../_puffer/temp.html \;
Nachher
find\
 ${1}\
 -maxdepth 100\
 \!\
 -type d\
 -name '*.html'\
 -exec ./3distribute.sh {} ../_puffer/temp.html \;

Beispiel 2

Ein Shell-Script namens chmod644 soll aus der DOS/Windows-Welt geholte Datei-Bäume auf Linux-Standard umstellen. Dazu werden deren "execute/search"-Permissions gelöscht.

Vorher
#!/bin/bash

if [ "$1" = "" ]; then
  echo Aus Sicherheitsgruenden ist die Direktangabe abgeschaltet.
else
  find . \! -maxdepth $1 -type d -exec chmod 644 {} \;
fi
Nachher
#!/bin/bash

if [ "$1" = "" ]; then
  echo Aus Sicherheitsgruenden ist die Direktangabe abgeschaltet.
else
  find . -maxdepth $1 \! -type d -exec chmod 644 {} \;
fi