find ... '!' -type d ...
Wie lassen sich alle Dateien mithilfe von find ohne Auswirkung auf Verzeichnisse rekursiv machen?
4346
wting
Ich muss das ausführbare Flag aus allen Dateien in einem bestimmten Verzeichnis und in Unterverzeichnissen entfernen. Im Moment mache ich es in zwei Schritten
find /dir/ -type f -exec chmod ugo-x {} \; find /dir/ -type d -exec chmod ugo+rx {} \;
Ist es möglich, die erste Zeile so zu ändern, dass das exec-Flag aus allen Nicht-Verzeichnisdateien entfernt werden kann? Da dies ziemlich regelmäßig in vielen Verzeichnissen und Dateien erfolgen muss, würde ich es vorziehen, kein Bash-Skript zu verwenden, das die Geschwindigkeit verlangsamt.
Was tut Ihr aktueller Befehl aus Neugier nicht richtig? Das Prädikat `-type f` selektiert bereits alle Dateien (oder alle Nicht-Verzeichnisdateien), da alles, was eine Datei ist, nicht auch ein Verzeichnis sein kann.
David Z vor 14 Jahren
0
@David: Sockets, FIFOs, Symlinks, Geräte usw.
Ignacio Vazquez-Abrams vor 14 Jahren
0
@Ignacio: Ja, aber die Frage drehte sich um Dateien, nicht um all die anderen Dinge, die keine Dateien waren.
David Z vor 14 Jahren
0
@ David: Dies ist * nix. Alles ist eine Datei.
Ignacio Vazquez-Abrams vor 14 Jahren
0
@ Ignacio: Alles hat einen Dateisystempfad, sicher, aber man kann nicht immer sagen, dass alles tatsächlich eine Datei ist. Einige Leute tun dies, aber andere verwenden "file" im Sinne einer regulären Datei, dh etwas, das mit dem `-type f`-Prädikat 'find' übereinstimmen würde. Für mich hat der Wortlaut dieser Frage die letztere Bedeutung deutlich gemacht.
David Z vor 14 Jahren
1
1 Antwort auf die Frage
4
Ignacio Vazquez-Abrams
Vielen Dank, ich wusste nicht, dass es Operatoren gab. Sind die einfachen Anführungszeichen erforderlich, da ich es ohne sie schaffen konnte?
wting vor 14 Jahren
0
Es hängt von Ihrer Shell und ihren Optionen ab. bash verwendet '!' in der History-Erweiterung, daher ist es eine gute Idee, es in der CLI zu zitieren. Sie werden es wahrscheinlich nicht in einem Skript brauchen.
Ignacio Vazquez-Abrams vor 14 Jahren
1
Historienerweiterung ist in Skripten nicht aktiv, richtig.
Daenyth vor 14 Jahren
0
Verwandte Probleme
-
9
Was ist der Unterschied zwischen den Befehlen "su -s" und "sudo -s"?
-
4
Gutes freies Ubuntu Server-VMWare-Image benötigt
-
4
Was sind die Unterschiede zwischen den großen Linux-Distributionen? Werde ich es merken
-
2
Begrenzung der CPU-Auslastung für Flash in Firefox?
-
2
Wie kann ich mein Mikrofon unter Debian GNOME zum Laufen bringen?
-
2
Conky-Setups - Beispiele / Ideen?
-
3
Was sind die Unterschiede zwischen Linux Window Managern?
-
2
ThunderBird / Lichtsynchronisation mit SE k770i
-
4
Linux-Dateisystem
-
6
Vollbild-Flash langsam in KDE 4