Как повторить каталоги, содержащие соответствие файлу с Bash?

Я хочу записать сценарий удара, который будет использовать список всех каталогов, содержащих определенные файлы. Я могу использовать find повторить путь каждого файла соответствия. Я только хочу перечислить путь к каталогу, содержащему по крайней мере один файл соответствия.

Например, учитывая следующую структуру каталогов:

dir1/
    matches1
    matches2
dir2/
    no-match

Команда (поиск 'matches*') только произведет путь к dir1.

Как дополнительный фон, я использую это для нахождения каждого каталога, который содержит Java .class файл.

33
задан Grundlefleck 17 February 2010 в 17:00
поделиться

3 ответа

find -name '*.class' -printf '%h\n' | sort -u

Из человек найти :

-printf формат

% h Ведущие каталоги имени файла (все, кроме последнего элемента). Если имя файла не содержит косой черты (поскольку оно находится в текущем каталоге), спецификатор % h заменяется на "." .

59
ответ дан 27 November 2019 в 17:35
поделиться

GNU find

find /root_path -type f -iname "*.class" -printf "%h\n" | sort -u
7
ответ дан 27 November 2019 в 17:35
поделиться
find / -name *.class -printf '%h\n' | sort --unique
1
ответ дан 27 November 2019 в 17:35
поделиться