Lệnh ls
đang xử lý tên tệp , được ghi lại trong cấu trúc dữ liệu thư mục. Vì vậy, nó không thực sự quan tâm đến chính tệp, bao gồm cả "loại" của tệp.
Một lệnh phù hợp hơn để làm việc trên các tệp thực tế , không chỉ tên của nó, là find
. Nó có một tùy chọn trả lời trực tiếp câu hỏi của bạn về cách lọc danh sách theo loại tệp.
Điều này đưa ra một danh sách của thư mục hiện tại tương tự như ls -l
:
find . -maxdepth 1 -ls
Theo mặc định, find
liệt kê các thư mục theo cách đệ quy, bị vô hiệu hóa bằng cách giới hạn độ sâu tìm kiếm xuống 1.
Bạn có thể bỏ qua .
, nhưng tôi đã bao gồm nó để hiển thị các thư mục cần được liệt kê trước các tùy chọn.
Với -type
, bạn có thể lọc theo loại tệp, được thể hiện dưới dạng f
hoặc d
cho các tệp hoặc thư mục đơn giản:
find . -maxdepth 1 -type d -ls
Có các giá trị bộ lọc khác -type
, đáng chú ý là l
các liên kết tượng trưng.
Lưu ý rằng có một sự phức tạp với các liên kết tượng trưng :
Có hai loại tệp trong trường hợp này : l
, biểu thị một liên kết tượng trưng và một cái gì đó giống như f
, chỉ ra loại tệp được liên kết đến. Có các tùy chọn để xác định cách xử lý đó, vì vậy bạn có thể chọn.
Từ 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)
và liên quan đến việc xử lý các liên kết tượng trưng:
-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.
và
-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. [...]