Làm thế nào tôi có thể làm `ls` trên một dotfile?


0

ls trên một dotfile

Thư mục của tôi chứa:

$ ls -A    
.dotfile20091021   file20091020       file20091021

Tôi muốn liệt kê TẤT CẢ các tệp chứa 20091021 trong tên của họ.

Nếu tôi chạy:

$ ls -A *20091021*    
file20091021

Nếu tôi chạy:

$ ls -A .*20091021*    
.dotfile20091021

Tôi có thể nhận cả hai tệp trong một lệnh "ls" không?


Bạn đã từng nghe về 'grep' chưa?
Tim Post

Câu trả lời:


1

Theo liên kết này, có một tùy chọn bash cho các tệp chấm toàn cầu:

shopt -s dotglob

Nếu bạn sử dụng bash thì tất cả những gì bạn cần làm sau đó là:

ls -A *20091021*

(Không thể kiểm tra nó ở đây)


4
ls -A1 | grep "20091021"

Tôi nghĩ rằng đây có lẽ là cái tốt nhất, vì nó chỉ dựa vào đầu ra ls tiêu chuẩn và công cụ grep, cả hai đều có sẵn rộng rãi. JF
jfmessier

2

Bạn chỉ có thể làm

ls -a *20091021 .*20091021

(Bám sát yêu cầu của bạn rằng bạn muốn làm điều này trong một lần duy nhất ls)


1
Điều này phụ thuộc vào vỏ để mở rộng toàn cầu.
Tim Post

/ bin / sh có thể chỉ ra nhiều thứ, từ distro đến distro :)
Tim Post

Nó không quá nhiều đến nỗi nó có thể không hoạt động nhiều vì nó có thể gây ra lỗi nếu quả cầu không khớp với bất cứ thứ gì.
Matthew Scharley

0

Bạn đang dựa vào (bất cứ thứ gì bạn đang sử dụng) để thực hiện mở rộng toàn cầu.

ls -lah | grep \.foo

.. có thể giúp bạn sắp xếp nó ra một cách di động.

Ví dụ:

user@tower:~ ls -lah | grep \.mozilla
drwx------  3 root root 4.0K 2007-11-14 06:17 .mozilla
user@tower:~    

Kìa, sức mạnh của đường ống :) Mở rộng đó là một bài tập cho người đọc. shopt không thể di động và trên các hệ thống sử dụng vỏ POSIX nghiêm ngặt (chẳng hạn như dấu gạch ngang), nó bị hỏng. Tốt hơn là viết nó một cách đơn giản, và có thể di chuyển .. hoặc bạn sẽ tải tập lệnh đã thử và đúng của mình lên một hộp chạy một số bản phân phối khác và xem nó bị hỏng, thật khủng khiếp.

NB, mỗi vỏ không mở rộng toàn cầu theo cách riêng của nó, được xác định rộng rãi bởi giấy phép của nó. Xin vui lòng, xin vui lòng, tránh bashism. Ubuntu đã chi hàng chục ngàn đô la để loại bỏ những thứ đó trong sản phẩm của họ.

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.