Kiểm tra xem có điều gì đó tồn tại ở đường dẫn nhất định bằng toán tử kiểm tra tệp -e
hay không.
print "$base_path exists!\n" if -e $base_path;
Tuy nhiên, thử nghiệm này có lẽ rộng hơn bạn dự định. Đoạn mã trên sẽ tạo ra đầu ra nếu một tệp đơn giản tồn tại ở đường dẫn đó, nhưng nó cũng sẽ kích hoạt một thư mục, một đường ống có tên, một liên kết tượng trưng hoặc một khả năng kỳ lạ hơn. See the documentation để biết chi tiết.
Với phần mở rộng là .TGZ
trong câu hỏi của bạn, có vẻ như bạn mong đợi một tệp đồng bằng thay vì các lựa chọn thay thế. Toán tử kiểm tra tệp -f
hỏi xem đường dẫn có dẫn đến tệp thuần túy hay không.
print "$base_path is a plain file!\n" if -f $base_path;
Tài liệu perlfunc bao gồm danh sách dài Perl's file-test operators bao gồm nhiều tình huống bạn sẽ gặp phải trong thực tế.
-r
file có thể đọc được bởi hiệu quả uid/gid.
-w
Tệp có thể ghi bằng hiệu quả uid/gid.
-x
Tệp có thể thực thi bằng uid/gid hiệu quả.
-o
Tệp được sở hữu bởi hiệu quả uid.
-R
Tệp có thể đọc được bằng uid/gid thực.
-W
Tệp có thể ghi bởi uid/gid thực.
-X
Tệp có thể được thực thi bởi uid/gid thực.
-O
Tệp được sở hữu bởi real uid.
-e
Tệp tồn tại.
-z
Tệp có kích thước bằng 0 (trống).
-s
Tệp có kích thước không đông (trả về kích thước tính bằng byte).
-f
Tệp là tệp thuần túy.
-d
Tệp là một thư mục.
-l
Tệp là liên kết tượng trưng (sai nếu liên kết tượng trưng không được hệ thống tệp hỗ trợ).
-p
Tệp là ống có tên (FIFO) hoặc Filehandle là một ống.
-S
Tệp là ổ cắm.
-b
Tệp là một tệp đặc biệt chặn.
-c
Tệp là một tệp đặc biệt ký tự.
-t
Filehandle được mở thành một tty.
-u
Tệp có bộ bit được thiết lập.
-g
Tệp có bộ bit setgid.
-k
Tệp có bộ bit dính.
-T
Tệp là tệp văn bản ASCII hoặc UTF-8 (phỏng đoán heuristic).
-B
Tệp là tệp “nhị phân” (đối diện với -T
).
-M
Thời gian bắt đầu tập lệnh trừ đi thời gian sửa đổi tệp, tính theo ngày.
-A
Tương tự cho thời gian truy cập.
-C
Tương tự cho thời gian thay đổi inode (Unix, có thể khác nhau đối với các nền tảng khác)
Nguồn
2010-04-08 15:10:27
hey thịt xông khói, rất vui được gặp bạn. do đó, thậm chí có hoạt động cho một đường dẫn tương đối không? tôi nghĩ rằng nó chỉ làm việc cho tập tin cụ thể ... cảm ơn mát mẻ – superstar
@ siêu sao Xin chào một lần nữa! Có, '-e' làm việc với những con đường tương đối, nhưng tôi nghĩ rằng tôi có thể đã hiểu lầm câu hỏi của bạn. Bạn có một thư mục * có tên 'myMock.TGZ' và bạn muốn biết liệu thư mục đó có chứa một tệp có tên cụ thể không? Giúp chúng tôi cung cấp cho bạn câu trả lời tốt hơn bằng cách chỉnh sửa câu hỏi của bạn để bao gồm các ví dụ! –