Dies ist eine alte Version des Dokuments!
Testdaten ins Heimatverzeichnis kopieren:
cd cp -a /usr/share/doc .
jpg-Bilder in doc
suchen und Ergebnis in bilder.txt
speichern:
find doc/ -xdev -name "*.jpg" > /tmp/bilder.txt
Das Selbe, aber Fehlermeldungen unterdrücken:
find doc/ -xdev -name "*.jpg" > /tmp/bilder.txt 2> /dev/null
Berechtigung der in der Datei bilder.txt
aufgeführten Dateien mit chmod
ändern:
xargs chmod g+w < /tmp/bilder.txt
xargs
liest die (durch ein Zeilenende \n
getrennten) Dateinamen (ggf. mit Pfad) aus der Standardeingabe und hängt diese als Liste an das Kommando (hier chmod g+w
) an.
jpg-Bilder in doc
suchen und Berechtigung mit chmod
ändern:
find doc/ -xdev -name "*.jpg" 2> /dev/null | xargs chmod g-w
Verbesserte Version, die auch mit Leer- und Sonderzeichen in Dateinamen klar kommt:
mv doc 'Eigene Dateien' find Eigene\ Dateien -xdev -name "*.jpg" -print0 2> /dev/null | xargs -0 chmod g+w mv Eigene\ Dateien doc
Alle Grafikdateien in das Verzeichnis Bilder kopieren:
find / -name "*jpg" -exec cp {} Bilder/ \; 2>/dev/null find / -name "*jpg" -print0 2> /dev/null | xargs -0 cp -t Bilder
Lange Version, geht auch mit anderen Shells als bash:
find doc/ -xdev -name "*.jpg" > /tmp/bilder.txt 2>&1
Nur mit bash:
find doc/ -xdev -name "*.jpg" &> /tmp/bilder.txt
find /var -xdev -type d -ls 2>&1 | less
Nur mit bash:
find /var -xdev -type d -ls |& less
Todo: Beispiel für tee
tee ausgabe1 ausgabe2 < /etc/passwd | wc -l wc -l ausgabe1 ausgabe2
Sonderfall: stdout und stderr unterschiedlich weiterverarbeiten
((ls -l null eins |nl) 3>&1 1>&2 2>&3 | grep -v 'spezielle fehlermeldung' ) 3>&1 1>&2 2>&3
Es werden dazu stdout und stderr zweimal reihum getauschst.