LinuxForum.Fans
Тема

find - регулярные выражение в пути

Автор: valet 4 сообщений 3767 просмотров
#321833

Ребята, задача такая:
Хочу слить файлы file в один файл all.
файлы file лежат в каталогах типа:
/path/1/file
/path/2/file
...
/path/100500/file
Если стоит задача объединить полностью все файлы, можно воспользовался конструкцией:

text
find /path/ -type f -name 'file'|xargs -i cat {} >> all

и это прекрасно работает!
Но в моей задаче стоит условие объединить все файлы, кроме файлов находящихся в конкретных каталогах, например для определенности возьмем: кроме файлов:
/path/53/file
/path/21/file
Возникает мысль воспользоваться регекспом для указания пути, чтобы find понимал, что не надо ходить по некоторым путям. Но вот как это сделать?
Насколько я понял, ключ -regex для find работает только для имени файла, а здесь получается надо использовать регулярку для пути.

Кто подскажет как решить вопрос?

П.С. Гуглю - пока ничего толкового найти не могу, возможно это можно сделать еще как-то проще, но другого пути я пока не вижу.

#321834

... | grep -v "/21/\|/53/" | ...

#321835

"bormant⇓" написал:
... | grep -v "/21/\|/53/" | ...
Спасибо, действительно работает. Мне аж стыдно, что сам не догадался :)
#321846
text
$ find /path/ ! -regex ".*/\(21\|53\)/file"
Войдите или зарегистрируйтесь, чтобы ответить.