Tôi cần sử dụng tùy chọn nào find
để loại trừ các tệp ẩn?
.hidden/visible.txt
nà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.txt
nà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 findnh
mà 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/file
như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?
fd
Sử 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 .
ls
trừ 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ỉls
cho phép bạn bỏ qua chúng theo mặc định.