隠しファイルを除外するには、 find
でどのオプションを使用する必要がありますか?
私はこれを見つけました ここ :
find . \( ! -regex '.*/\..*' \) -type f -name "whatever"
否定グロブパターンはよく知られていないようです。だからあなたは使うことができます:
find . -name "[!.]*"
これはあなたの質問の答えにはなりませんが、非表示でないファイルを見つけるタスクでは、すべてのファイルを見つけさせてからgrepでフィルタリングしたいと思います。
find . -type f | grep -v '/\.'
あなたのアプローチに似ていますが、おそらくもう少し簡単です。
次のfind
の使用を試してください。
find . -type f -not -path '*/\.*'
これは、すべての隠しファイル(ドットで始まるファイルとディレクトリ)を無視します。
隠しファイルを見つけるには:
find -name '[.]*'
可視ファイルを見つけるには:
find -name '[!.]*'
とても簡単です。
私はfindnh
というスクリプトを作成しました。このスクリプトは、Webで見つけたこの質問への回答よりも、特定のEdgeケースをより適切に処理すると思います。
#!/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
は表示されないコマンドを使用すると、明示的に指定された非表示ディレクトリ内の非表示でないファイルやディレクトリを見つけることができます。