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

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

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

Файл примера Структура:

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

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

Предположим, вы бы использовали find с некоторым регулярным выражением? [ ! d4]

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

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

1 ответ

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

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

, вам нужно пойти примерно так:

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

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

find foo -type f | grep -v test

0
ответ дан 25 May 2018 в 01:52
  • 1
    Спасибо за этот вариант тоже, но для моих целей @ bodhi.zazen предоставил достаточное решение. – vgXhc 1 February 2013 в 22:58

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

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