У меня есть: каталог с множеством вложенных подкаталогов и файлов.
Я хотел бы: список всех файлов, имя которых не содержит определенной строки.
Пример структуры файла:
foo/
foo/bar/foobar.txt
foo/foo/foobartest.txt
foo/foobartest.txt
Если я введу свой запрос со строкой «test», он должен вернуть только /foo/bar/foobar.txt
Я полагаю, что можно использовать find
с некоторыми regex?
Большое спасибо за вашу помощь!
Если вы хотите получить
список всех файлов , имя которых не содержит определенной строки
blockquote>, вам необходимо сделайте что-то вроде этого:
find foo/ -type f -exec bash -c "basename {} | grep -v 'test' > /dev/null && echo {}" \;
Это будет соответствовать только по имени файла, но вывести относительный путь, как обычно делает find.
Может быть, кто-то может предложить более элегантное решение?Если сопоставление с относительным путем в порядке, вы можете пойти с ответом, предоставленным @ bodhi.zazen :
[ 111]
Зависит от того, что вы хотите на выходе.
ls -R | grep -v test
Или
find foo -type f | grep -v test
Вы можете отформатировать вывод с помощью таких инструментов, как perl или awk