Tôi cần sử dụng tùy chọn nào findđể loại trừ các tệp ẩn?
.hidden/visible.txtnào?
Tôi cần sử dụng tùy chọn nào findđể loại trừ các tệp ẩn?
.hidden/visible.txtnào?
Câu trả lời:
Tôi tìm thấy cái này ở đây :
find . \( ! -regex '.*/\..*' \) -type f -name "whatever"
\( ! -name '.*' \)?
\( ! -path '*/.*' \)sẽ.
Điều này không trả lời câu hỏi của bạn, nhưng đối với nhiệm vụ tìm các tệp không bị ẩn, tôi muốn cho phép tìm tất cả các tệp sau đó lọc bằng grep.
find . -type f | grep -v '/\.'
Tương tự như cách tiếp cận của bạn nhưng có lẽ đơn giản hơn một chút.
Tôi đã viết một kịch bản có tên findnhmà tôi tin rằng xử lý các trường hợp cạnh nhất định tốt hơn các câu trả lời cho câu hỏi này mà tôi có thể tìm thấy trên web.
#!/bin/bash
declare -a paths
while [ $# -ne 0 ]; do
case "$1" in -*) break ;; esac
paths+=("$1")
shift
done
find "${paths[@]}" \( -name . -o -name .. -o \! \( -name '.*' -prune \) \) "$@"
Ví dụ: bạn có thể tìm thấy các tệp và thư mục không bị ẩn bên trong một thư mục ẩn được chỉ định rõ ràng với một lệnh như findnh ~/.hiddendir/, sẽ hiển thị ~/.hiddendir/filenhưng không ~/.hiddendir/.superhiddenfile.
findnh ~/.hiddendir/, tôi không nhận được gì. Khác với điều đó, nó khác với ! -path '*/.*'và find … | grep -v '/\.'như thế nào?
fdSử dụng fd, một sự thay thế đơn giản, nhanh hơn nhiều và thân thiện với người dùng find. Theo mặc định, nó:
.gitignore, theo mặc định.Kiểm tra phân tích điểm chuẩn .
lstrừ khi được yêu cầu cụ thể: chúng là các tệp hoàn toàn bình thường ở mọi khía cạnh, nó chỉlscho phép bạn bỏ qua chúng theo mặc định.