Làm thế nào để có được kích thước tập tin chính xác và tên tập tin?


8

Ngay bây giờ tôi đang sử dụng ls -lt /my/directory(xem bên dưới) sau đó php phân tích cú pháp đầu ra. Nhưng không nhất quán vì dấu phân cách là không gian và có thể có hai hoặc nhiều khoảng trắng ở giữa hai trường.

Giải pháp là chỉ xuất ra tên tệpkích thước của nó . Làm cách nào tôi có thể liệt kê các tệp (sử dụng thẻ đại diện) và kích thước đầy đủ của nó trong dòng lệnh?

Vì vậy, thay vì

-rw------- 1 db2inst1 db2iadm1 855658496 Apr 22 02:31 MONTE.0.db2inst1.NODE0000.CATN0000.20120422023005.001

tôi có

855658496 MONTE.0.db2inst1.NODE0000.CATN0000.20120422023005.001

6
Đừng phân tích lsđầu ra, bao giờ hết . Thay vào đó, bạn nên hỏi làm thế nào để có được thông tin bạn muốn trực tiếp với PHP theo cách mạnh mẽ hơn, có lẽ trên StackOverflow?
jw013

Tôi làm ls trên máy chủ từ xa qua ssh vì vậy tôi không thể làm điều đó trực tiếp trong PHP.
Radek

Nếu bạn có thể, hãy gắn thư mục từ xa qua sshfs và quên đi phân tích cú pháp lshoặc statđầu ra.
Gilles 'SO- ngừng trở nên xấu xa'

Câu trả lời:


19

Như những người khác đã lưu ý, nếu đây là một ứng dụng web động, bạn nên sử dụng các hàm của PHP để truy cập kích thước tệp tốt hơn nhiều.

Nhưng nếu bạn định lấy nó bằng cách thực hiện lệnh shell, đừng sử dụng ls. Thay vào đó, sử dụng statvà nói với nó chính xác những gì bạn muốn:

$ stat -c '%n %s' x.txt
x.txt 12

1
Việc -tsử dụng trong lscuộc gọi ban đầu khó có thể được sao chép theo cách này.
manatwork

1
Lệnh đầy đủ tôi sẽ sử dụng là ssh root@monte stat -c \'%n %s\' /var/lib/edumate/backup/*MONTE*. Cảm ơn bạn.
Radek

@manatwor: cảm ơn bạn đã chỉ ra điều đó. Cần phải sắp xếp như vậy trong php rồi.
Radek

1
@Radek, sau đó bạn có thể muốn thêm %Y(thời gian sửa đổi lần cuối, giây kể từ Epoch) vào chuỗi định dạng.
manatwork

Tên tệp chứa dấu thời gian để tôi có thể sử dụng. Cảm ơn đã bình luận. Tôi sẽ cần điều đó nếu không có dấu thời gian.
Radek
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.