回答:
\( ! -name '.*' \)?
\( ! -path '*/.*' \)そうです。
私はfindnh、ウェブ上で見つけることができたこの質問に対する答えよりも、特定のエッジケースをうまく処理できると信じているというスクリプトを書きました。
#!/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 \) \) "$@"
たとえば、内部のようなコマンドで明示的に指定隠されたディレクトリの非隠されたファイルやディレクトリを見つけることができますfindnh ~/.hiddendir/表示されます、~/.hiddendir/fileしかしではないが~/.hiddendir/.superhiddenfile。
findnh ~/.hiddendir/、何も得られません。それ以外に、これは! -path '*/.*'とfind … | grep -v '/\.'どう違いますか?
ls特に要求されない限り、リストされていないというlsことです。それらはすべての点で完全に普通のファイルであり、デフォルトでそれらを無視することができます。