Find-Befehl in Linux

Find-Befehl in Linux

Mein Freund hat mir gesagt, dass man mit dem Schalter -r arbeiten kann, um Dateien rekursiv in Verzeichnissen und Unterverzeichnissen zu finden. Bitte sagen Sie mir den Fehler in der angegebenen Anweisung, es funktioniert nicht

find / -type f -r -name "abc.txt"

Antwort1

Der Grund, warum es nicht funktioniert, ist, dass find keine -rOption hat. Es stimmt zwar, dass das -rFlag für viele Programme „rekursiv“ bedeutet, aber das ist nicht bei allen der Fall und auch nicht bei find. Die Aufgabe von findist es, nach Dateien und Verzeichnissen zu suchen, es kommt nicht sehr oft vor, dass Sienichtmöchte, dass es rekursiv ist.

Sie können die Optionen der meisten Programme mit dem manBefehl überprüfen. Beispiel: man find. Da das Handbuch von find sehr umfangreich ist, möchten Sie dort möglicherweise nach der -rOption suchen:

$ man find | grep -w -- -r

Das -- weist grep lediglich an, das Lesen von Optionen zu beenden. Ohne dieses Zeichen würde -r als Option an grep übergeben. Sie können auch innerhalb der Manpage suchen, indem Sie auf klicken, den /Suchbegriff eingeben und dann die Eingabetaste drücken.

Dieser Befehl gibt nichts zurück. Vergleichen Sie ihn mit diesem, der das Handbuch von durchsucht cp:

$ man cp | grep -w -- -r
   -R, -r, --recursive

Da findes immer rekursiv ist, verfügt es über die Umkehrung, ein Flag, mit dem Sie auswählen können, in wie viele Unterverzeichnisse es absteigen soll:

   -maxdepth levels
          Descend at most levels (a non-negative integer) levels of direc‐
          tories below the command line arguments.  -maxdepth 0
           means only apply the tests and  actions  to  the  command  line
          arguments.

   -mindepth levels
          Do  not apply any tests or actions at levels less than levels (a
          non-negative integer).  -mindepth  1  means  process  all  files
          except the command line arguments.

Wenn Sie also Zweifel an einem Befehl haben, lesen Sie die manSeite dazu, denn Sie wissen nie, was eine bestimmte Option bewirken könnte. Beispiel:

$ man sort | grep -w -- -r
   -r, --reverse
$ man mount | grep -w -- -r,
   -r, --read-only
$ man awk | grep -A 8 -w -- -r
  -r
  --re-interval
          Enable the use of interval  expressions  in  regular  expression
          matching (see Regular Expressions, below).  Interval expressions
          were not traditionally available in the AWK language.  The POSIX
          standard  added them, to make awk and egrep consistent with each
          other.  They are enabled by default, but this option remains for
          use with --traditional.
$ man sed | grep -w -- -r
   -r, --regexp-extended
$ man xterm | grep -w -- -r
   -r      This option indicates that reverse video should be simulated by
           swapping the foreground and background colors. 

Du hast die Idee.

Antwort2

findist bereits rekursiv, Sie brauchen nicht die-r

verwandte Informationen