Какие параметры мне нужно использовать, find
чтобы исключить скрытые файлы?
.hidden/visible.txt
?
Какие параметры мне нужно использовать, find
чтобы исключить скрытые файлы?
.hidden/visible.txt
?
Ответы:
Я нашел это здесь :
find . \( ! -regex '.*/\..*' \) -type f -name "whatever"
\( ! -name '.*' \)
?
\( ! -path '*/.*' \)
будет.
Похоже, что шаблон негатива не известен. Таким образом, вы можете использовать:
find . -name "[!.]*"
Это не отвечает на ваш вопрос, но для задачи поиска не скрытых файлов я хотел бы позволить find найти все файлы, а затем отфильтровать с помощью grep.
find . -type f | grep -v '/\.'
Похож на ваш подход, но, возможно, немного проще.
Я написал скрипт, 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 '/\.'
?
fd
Используйте fd
простую, намного более быструю и удобную альтернативу find
. По умолчанию это:
.gitignore
По умолчанию игнорирует шаблоны от вашего .Проверьте контрольный анализ .
ls
если не указано иное: они являются совершенно обычными файлами во всех отношениях, просто ониls
позволяют игнорировать их по умолчанию.