Frage

Ich brauche ein Skript, das eine einzige Befehlszeile Argument, dass ein Verzeichnispfad ist. Das Skript sollte das Argument überprüfen, um zu bestimmen, ob es in der Tat ist ein Verzeichnis. Wenn es ein Verzeichnis ist, dann sollte das Skript den Schutz ändern Modus irgendwelcher darin auf 600 befindet Unterverzeichnisse Wenn das Argument kein Verzeichnis ist, dann wird eine entsprechende Meldung ausgedruckt werden soll.

Ich habe

if [-d $ 1]; dann


sonst

echo "Dies ist kein Verzeichnis"

fi

Im Grunde weiß ich nicht, was auf der Leerzeile zu setzen. Ich war Herumalbern mit chmod aber meine Linie schien zu wollen, den eingegebenen Pfad zu ändern und nicht nur die Unterverzeichnisse.

War es hilfreich?

Lösung

if test -d "$1"; then
    find "$1" -type d -exec chmod 600 '{}' \;
else
    echo "Not a directory: $1" >&2
    exit 1
fi

Verschiedene Varianten schneller sein können, aber hängen von Funktionen, die nicht in der alten find oder xargs.

find "$1" -type d -exec chmod 600 '{}' +
find "$1" -type d -print0 | xargs -0r chmod 600

Andere Tipps

([ -d "$1" ] && find $1 -type d -mindepth 1 | xargs chmod 600 | true) || echo 'Not a directory'
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top