Der Befehl ls
behandelt Dateinamen , die in den Verzeichnisdatenstrukturen aufgezeichnet sind. Es kümmert sich also nicht wirklich um die Datei selbst, einschließlich des "Typs" einer Datei.
Ein Befehl, der sich besser für die Bearbeitung von Dateien eignet , nicht nur für die Namen find
. Es gibt eine Option, die Ihre Frage zum Filtern der Liste nach Dateityp direkt beantwortet.
Dies gibt eine Auflistung des aktuellen Verzeichnisses, ähnlich wie ls -l
:
find . -maxdepth 1 -ls
Standardmäßig werden find
Verzeichnisse rekursiv aufgelistet, was deaktiviert wird, indem die Suchtiefe auf 1 begrenzt wird.
Sie können das weglassen .
, aber ich habe es eingefügt, um anzuzeigen, dass die Verzeichnisse vor den Optionen aufgelistet werden müssen.
Mit -type
können Sie nach Dateityp filtern, der als f
oder d
für einfache Dateien oder Verzeichnisse ausgedrückt wird :
find . -maxdepth 1 -type d -ls
Es gibt andere Filterwerte für -type
, insbesondere l
für symbolische Links.
Beachten Sie, dass es bei Symlinks eine Komplikation
gibt : In diesem Fall gibt es zwei Dateitypen: l
einen Symlink und so etwas wie f
den Typ der verknüpften Datei. Es gibt Optionen, mit denen Sie festlegen können, wie Sie damit umgehen möchten.
Von man find
:
-type c
File is of type c:
b block (buffered) special
c character (unbuffered) special
d directory
p named pipe (FIFO)
f regular file
l symbolic link; this is never true if the -L option
or the -follow option is in effect, unless the sym‐
bolic link is broken. If you want to search for
symbolic links when -L is in effect, use -xtype.
s socket
D door (Solaris)
und relevant für den Umgang mit symbolischen Links:
-xtype c
The same as -type unless the file is a symbolic link. For
symbolic links: if the -H or -P option was specified, true
if the file is a link to a file of type c; if the -L option
has been given, true if c is `l'. In other words, for sym‐
bolic links, -xtype checks the type of the file that -type
does not check.
und
-P Never follow symbolic links. This is the default behav‐
iour. When find examines or prints information a file, and
the file is a symbolic link, the information used shall be
taken from the properties of the symbolic link itself.
-L Follow symbolic links. When find examines or prints infor‐
mation about files, the information used shall be taken
from the properties of the file to which the link points,
not from the link itself (unless it is a broken symbolic
link or find is unable to examine the file to which the
link points). Use of this option implies -noleaf. If you
later use the -P option, -noleaf will still be in effect.
If -L is in effect and find discovers a symbolic link to a
subdirectory during its search, the subdirectory pointed to
by the symbolic link will be searched.
When the -L option is in effect, the -type predicate will
always match against the type of the file that a symbolic
link points to rather than the link itself (unless the sym‐
bolic link is broken). Using -L causes the -lname and
-ilname predicates always to return false.
-H Do not follow symbolic links, except while processing the
command line arguments. [...]