[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bash-Skript in Ordnern und Unterordnern abarbeiten



Spiro Trikaliotis <list-debian-user-german@spiro.trikaliotis.net> (Mo 12 Dez 2016 23:00:00 CET):
…
> > Beispiel: Alle Dateien in einem Verzeichnis inkl. Unterverzeichnisse
> > ermitteln und Prüfsumme ermitteln:
> > 
> >      find . -type f -print0 | xargs -r -0 sha512sum
> 
> aber gerade der Aufruf mit den Argumenten geht mit find auch anders,
> einfacher, ohne -print0:
> 
> $ find . -type f -exec sha512sum \{\} \;

Wenn der Script mit Pfadnamen umgehen kann, hast Du recht. Wenn er es
nicht kann, dann hilft Dein Vorschlag nicht. Aber -execdir.
Aber auch dann müsste der Script vom OP angepasst werden, denn der
geht ja aktuell davon aus, dass er selbst die Files im aktuellen Ordner
mit "*" ermitteln kann.

> oder auch
> 
> $ find . -type f -exec sha512sum \{\} \+

BTW, bei einer Bash kann Du die Backslashes vor {, } und + ruhig
weglassen. Bei den Klammern nicht immer, aber wenn einfach die
schließende der öffnenden folgt, dann ja.

> je nachdem, ob es ein mehrmaliger Aufruf eines Programms mit jeweils
> einem Argument ("\;"), oder der (möglichst) einmalige Aufruf eines
> Programms mit vielen Argumenten ("\+") sein soll.

Und hier würde ich auch die Backslashes weglassen. Denn nur vom ; oder +
hängt es ab, wie das Programm aufgerufen wird. Je nach Shell *kann* es
notwendig sein, das eine oder andere Zeichen zu quoten.
    
    find … -exec … ';'

wäre auch richtig, bei einer Bash.

-- 
Heiko

Attachment: signature.asc
Description: Digital signature


Reply to: