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.
ls -la | awk '$9 ~ /^\./'sẽ.
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.
ls -la | awk '$9 ~ /^\./'sẽ.
Câu trả lời:
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.
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 .*
Đâ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.
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.
-A(thay vì -a) để bỏ qua ., ...
-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.
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 và thư mục ẩn , không có. và ..
find -maxdepth 1 -regex '\./\..+' -printf "%P\n"
find . \( -type f -o -type d \) -name '\.*' -print; áp dụng maxdepthkhi cần thiết.
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 "^\./\."
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"
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
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 '^\.'