Рекурсивный список файлов с именами, которые не содержат определенной строки

У меня есть: каталог с множеством вложенных подкаталогов и файлов.

Я хотел бы: список всех файлов, имя которых не содержит определенной строки.

Пример структуры файла:

foo/
foo/bar/foobar.txt
foo/foo/foobartest.txt
foo/foobartest.txt

Если я введу свой запрос со строкой «test», он должен вернуть только /foo/bar/foobar.txt

Я полагаю, что можно использовать find с некоторыми regex?

Большое спасибо за вашу помощь!

0
задан 1 February 2013 в 20:20

2 ответа

Если вы хотите получить

список всех файлов , имя которых не содержит определенной строки

, вам необходимо сделайте что-то вроде этого:

find foo/ -type f -exec bash -c "basename {} | grep -v 'test' > /dev/null && echo {}" \; Это будет соответствовать только по имени файла, но вывести относительный путь, как обычно делает find.
Может быть, кто-то может предложить более элегантное решение?

Если сопоставление с относительным путем в порядке, вы можете пойти с ответом, предоставленным @ bodhi.zazen :

[ 111]

0
ответ дан 1 February 2013 в 20:20

Зависит от того, что вы хотите на выходе.

ls -R | grep -v test

Или

find foo -type f | grep -v test

Вы можете отформатировать вывод с помощью таких инструментов, как perl или awk

0
ответ дан 1 February 2013 в 20:20

Другие вопросы по тегам:

Похожие вопросы: