1 (26.05.2013 10:40:02 отредактировано valet)

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

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

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

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

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

2

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

3

bormant⇓ пишет:

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

Спасибо, действительно работает. Мне аж стыдно, что сам не догадался ab

4 (26.05.2013 13:29:07 отредактировано -=Serj=-)

$ find /path/ ! -regex ".*/\(21\|53\)/file"
Да, у меня Ubuntu.
Нет, не глючит.