Problematik:
Wenn man mittels find -type f | xargs rm Dateien löscht, kann es beispielsweise auf Samba-Shares dazu kommen, dass Dateien gelöscht werden, die man gar nicht löschen möchte, da diese Leerstellen enthalten und durch den rm-Befehl als zwei oder mehr Dateien interpretiert werden. Abhilfe schafft hier der folgende Befehl, durch den jede Ausgabe des find-Befehls durch ein “Ascii-0” beendet wird, die entsprechend durch das xargs -0 verarbeitet werden kann.
find . -type f -print0 | xargs -0 rm
finde alles ausser versteckten dateien (\.*)
find . -type f -a -not -name "\.*"
find / \! -name "*.c" -print
Print out a list of all the files whose names do not end in .c.
find / -newer ttt -user wnj -print
Print out a list of all the files owned by user ``wnj'' that are
newer than the file ttt.
find / \! \( -newer ttt -user wnj \) -print
Print out a list of all the files which are not both newer than
ttt and owned by ``wnj''.
find / \( -newer ttt -or -user wnj \) -print
Print out a list of all the files that are either owned by
``wnj'' or that are newer than ttt.
find . -newerct '1 minute ago' -print
Print out a list of all the files whose inode change time is more
recent than the current time minus one minute.
Wenn man Dateien, die Leerstellen enthalten umbenennen möchte und zugleich auch noch die Großbuchstaben automatisch in Kleinbuchstaben umwandeln möchte, so hilft folgendes Skript.
mv bzw. rename skript für .png-Graphiken
PREFIX="/gallery/pic_"
find -name "*.png" -printf "DATEI=\"%f\"\n" | \
while read filename
do
eval $filename
NEU=$(echo $DATEI | tr '[A-Z ]' '[a-z_]')
eval mv \"$DATEI\" \"$PREFIX_$NEU\"
done
Problematik: Will man in einem Skript Variablen mit Default-Werten vorbelegen (z.B. ein Übergabeparameter, der nicht angegeben wurde), so verwendet man folgende Syntax:
VAR=${VARIABLE:-defaultwert}
Im Falle des Übergabeparameters $1 sieht das so aus (im Beispiel soll $1 mit dem Wert /var/log belegt werden):
LOGDIR=${1:-/var/log}