2011-01-02 23 views
5

Với một lệnh shell tôi cần phải liệt kê tất cả các tập tin trên máy chủ của tôi trong mô hình thư mục sau:Shell lệnh để tìm tập tin trong một thư mục mẫu

/home/*/public_html/images/*.php

Có thể mất một thời gian dài để thực hiện việc này theo cách thủ công. Tôi thực sự không có ý tưởng khi nói đến các lệnh này.

+1

Có. Đó là cú pháp chính xác. Nó có hoạt động không? Hay bạn muốn làm cho nó nhanh hơn? Nếu có, không thể tối ưu hóa vốn có. Chỉ cần lựa chọn thay thế và cách giải quyết. 'locate | grep' là một để tìm kiếm danh sách thư mục được lưu trong bộ nhớ cache. – mario

Trả lời

11

Shell Script:

find /home/*/public_html/images -iname "*php" -exec echo {} \; 

Bạn có thể sau đó thay đổi -exec lệnh để làm bất cứ hành động nào bạn muốn trả về các tập tin. Trong trường hợp này, chúng tôi lặp lại chúng, nhưng bạn có thể dễ dàng thực hiện các hành động khác.

+0

Điều này sẽ khớp với '/ home/foo/public_html/images/file.php' nhưng không khớp với'/home/foo/bar/public_html/images/file.php'. Bất kỳ cách nào tôi có thể phù hợp với thư mục ở độ sâu nào? –

-2

Sử dụng PHP glob chức năng

glob('/home/*/public_html/images/*.php') 

Nó sẽ trả về một mảng của chuỗi con đường phù hợp. Bạn cũng có thể chỉ cần sử dụng:

ls /home/*/public_html/images/*.php 

hay:

for i in /tmp/*/public_html/images/*.php; 
do 
some_command "$i" 
done 

từ vỏ.

+0

Tôi tin rằng anh ấy làm điều này trong trình bao, chứ không phải php. – marcog

+0

@marcog, nó được gắn thẻ PHP. Nhưng nó không thực sự quan trọng. –

+0

Thẻ PHP có thể xuất phát từ thực tế là anh ấy liệt kê các tệp .php. – marcog

5

Hãy bash mở rộng các tập tin cho bạn và sử dụng ls để liệt kê chúng:

ls /home/*/public_html/images/*.php 

Ví dụ đầu ra:

/home/grant/public_html/images/bar.php 
/home/grant/public_html/images/foo.php 
/home/marcog/public_html/images/helloworld.php 
11
find /path/to/directory/. -path "*/match/this/path/*" -type f -name "*.php" 
+0

Cảm ơn, đây là những gì tôi cần. Nó tìm các tệp trong '/ path/to/directory/foo/match/this/path' và'/path/to/directory/foo/bar/match/this/path/baz/' –

Các vấn đề liên quan