Как искать файлы по каталогу и имени файла combo pattern

Я хочу найти все .xml-файлы во всех каталогах и подкаталогах с именем «метаданные» в файловой системе. Есть ли способ поиска по шаблону, подобному

find . -name */metadata/*.xml" (mixing find command and Gradle paralance) 

?

3 Solutions collect form web for “Как искать файлы по каталогу и имени файла combo pattern”

 $ find / -path "*/metadata/*" -name "*.xml" 

или, в зависимости от ваших потребностей, просто

 $ find / -path "*/metadata/*.xml" 

Однако это не одно и то же.

  • Первый найдет все файлы с суффиксом .xml с контуром, который содержит каталог metadata . Файлы могут находиться на нескольких уровнях ниже этого каталога.

  • Второй найдет все файлы с суффиксом .xml которые находятся в каталоге metadata .

Примечание. Я использую / как вы сказали «в файловой системе», который я интерпретировал как «где угодно».

В качестве альтернативы, используя locate (будут доступны только файлы, доступные для всех пользователей):

 $ locate "/metadata/" | grep '\.xml$' 

(Это будет работать так же, как первое find выше)

Это небрежно, но пока вы находитесь в родительском каталоге по своему усмотрению, вы можете попробовать

 grep -nr "*metadata/*xml" . 

Что вам нужно понять, так это то, что имя в «find» на самом деле является «basename». Следовательно, чтобы получить фактическое имя файла, мы можем запустить вложенную находку, в которой мы сначала находим каталог, имя которого является «метаданные», а затем искать любые * .xml файлов в указанном каталоге:

 find . -type d -name metadata -exec sh -c ' shift $1; while case $# in 0 ) break;; esac; do find "${1}/." ! -name . -prune -type f -name \*.xml shift done ' 2 1 {} + 
  • В чем разница между поиском. и найти . -Распечатать
  • Поиск строк в файлах
  • Как я могу превратить инструмент `file` в предикат для` find`?
  • «Find» пересекает каталог, если используется «-not -path» * / FolderName / * "'?
  • Как искать текстовый файл для определенного целого
  • Разница, которую делают кавычки в команде find
  • Прямые результаты команды «Найти» для javac
  • Помощь в командах UNIX - найти
  • как сделать поиск текста на терминале напрямую
  • Как я могу запустить определенную команду для каждого результата поиска?
  • Как заменить список заполнителей в текстовом файле?
  • Interesting Posts
    Linux и Unix - лучшая ОС в мире.