Які параметри мені потрібно використовувати find
для виключення прихованих файлів?
.hidden/visible.txt
?
Які параметри мені потрібно використовувати find
для виключення прихованих файлів?
.hidden/visible.txt
?
Відповіді:
Я знайшов це тут :
find . \( ! -regex '.*/\..*' \) -type f -name "whatever"
\( ! -name '.*' \)
?
\( ! -path '*/.*' \)
б.
Це не відповідає на ваше запитання, але для завдання пошуку не прихованих файлів мені подобається знайти знайти всі файли, а потім відфільтрувати за допомогою грепа.
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
дозволяє ігнорувати їх за замовчуванням.