chỉ hiển thị các tập tin bắt đầu bằng. (ẩn)


11

Tôi đã cố gắng chỉ hiển thị các tập tin ẩn nhưng không biết làm thế nào để làm điều đó.

Đó là làm việc (nhưng phù hợp cũng chấm ở những nơi khác)

ls -la | grep '\.'

Đã cố gắng thêm ^nhưng không tìm thấy giải pháp.


1
Phân tích cú pháp lskhông bao giờ là một ý tưởng tuyệt vời, nhưng những gì bạn đã cố gắng sẽ có hiệu quả nếu bạn sử dụng mỏ neo ^để biểu thị sự bắt đầu của trận đấu. ls -la | grep '^\.'
devnull

3
Không, nó sẽ không phải là tên tập tin không phải là bắt đầu của dòng với cờ -l. ls -la | awk '$9 ~ /^\./'sẽ.
yoonix

Câu trả lời:


18

ls -ld .* sẽ làm những gì bạn muốn.


4
find . -type f -name '\.*' -print 

Phải làm việc nếu bạn muốn liệt kê mọi tập tin ẩn trong hệ thống phân cấp thư mục.


2

Nếu bạn muốn phân tích lsđầu ra, bạn phải thêm ^vào lúc bắt đầu regex và không sử dụng -ltùy chọn. Sử dụng -lnguyên nhân mỗi đầu ra dòng bắt đầu với thông tin cấp phép tệp hoặc thư mục, không phải tên tệp hoặc thư mục. Vì vậy, bạn nên sử dụng như thế này:

ls -Ad | grep '^\.'

Hoặc bạn có thể làm với printfbash dựng sẵn:

printf "%s\n" .*

Nếu bạn sử dụng zsh, bạn có thể sử dụng:

print -l .*

1

Đây là hai cách khác để tìm các tập tin ẩn.

find . -maxdepth 1 -name ".*" -type f -ls

hoặc là

find . -maxdepth 1 -name ".*" -type f -printf "%P \n"

Sử dụng -maxdepthđể xác định khoảng cách bạn muốn tìm kiếm trong cây thư mục.


1

Một cải tiến về câu trả lời của Flup :

ls -lad .[!.]* ..?*

Điều này sẽ liệt kê tất cả các tệp có tên bắt đầu bằng dấu chấm và không phải .cũng không ...

Lưu ý rằng nếu bạn muốn đường ống đầu ra của lsđể grep(trong đó, như ra nhọn bởi devnull , không bao giờ là một ý tưởng tốt), chắc chắn rằng bạn sử dụng \lshoặc command lsbởi vì nếu lslà aliased để cho bạn thấy đầu ra màu (vì nó là trên Debian ví dụ) , đầu ra của nó chứa các chuỗi thoát ANSI để tạo đầu ra có màu, nó sẽ tăng lên grepnếu mẫu của nó được neo ở đầu dòng.


1
Bạn có thể sử dụng -A(thay vì -a) để bỏ qua ., ...
OJFord

@ OJFord + -Akhác với -acác thư mục lsđi xuống, nhưng cả hai đều bị bỏ qua (bằng nhau) và vô dụng đối với các tên được chỉ định trên dòng lệnh có -dhiệu lực. Ngoài ra nếu lsđược đặt bí danh --color=auto thì đường ống là được; chỉ --color=alwayshoặc --colorgây rắc rối.
dave_thndry_085

0

Giải pháp của val0x00ff thực sự tốt, nhưng nó quên các thư mục ẩn.

Nếu bạn muốn các tập tin ẩn thư mục ẩn , không có. và ..

find -maxdepth 1 -regex '\./\..+' -printf "%P\n"

Đề xuất của bạn không thành công trên VMware ESXi (liệt kê không có tệp và không có thư mục) và cũng không thành công trên Linux (với maxdepth> 1, nó cũng liệt kê bất kỳ tệp nào trong thư mục bắt đầu bằng.), Nhưng điều này hoạt động trên cả Linux và ESXi: find . \( -type f -o -type d \) -name '\.*' -print; áp dụng maxdepthkhi cần thiết.
Jeroen Wiert Pluimers

0

Dưới đây là một nhỏ gọn và hỗ trợ nhiều biến thể

1) Hiển thị tập tin ẩn, thư mục và thư mục con

find . | grep "^\./\."

2) Chỉ hiển thị các thư mục ẩn và thư mục con

find . -type d | grep "^\./\."

3) Chỉ hiển thị các tập tin ẩn trong thư mục hiện tại và thư mục con

find . -type f | grep "^\./\."

4) Hiển thị các tập tin và thư mục ẩn trong thư mục hiện tại

find . -maxdepth 1 | grep "^\./\."


0

Bạn co thể thử:

find . -maxdepth 1 -type f -name '\.*' -print
find . -maxdepth 1 \( -type f -o -type d \) -name '\.*' -print

Tất nhiên bạn có thể sử dụng các maxdepthgiá trị khác nhau hoặc loại bỏ nó hoàn toàn. Rất hữu ích nếu bạn muốn khám phá giữa các thư mục ( -type d) hoặc tệp thông thường ( type f) hoặc cả hai và kết hợp với các chức năng khác như:

(ví dụ: lần sửa đổi cuối cùng, dựa trên ví dụ @piroux - được hoàn thành bởi @ jeroen-wiert-pluimers )

find . -maxdepth 1 \( -type f -o -type d \) -name '\.*' -exec stat -c %y {} \; -printf "%P\t"

-1

Bạn co thể thử :

ls -a |grep -E  "^\."

^ chỉ ra đó là sự khởi đầu của nội dung với biểu thức chính


1
Một bản sao của một câu trả lời khác từ 3 ​​năm trước ...
Jeff Schaller

Tôi đã thấy câu trả lời trước đó, nó không trùng lặp và chắc chắn "ls -a" và "ls -Ad" không có cùng ý nghĩa. "-a" có nghĩa là liệt kê tất cả bao gồm các tệp / thư mục bắt đầu bằng "." -A có nghĩa là liệt kê tất cả nhưng không bao gồm "." , ".." và nội dung thư mục.
Lingjing Pháp
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.