2014-10-27 4 views
0

Мне нужен скрипт, который найдет и доставит мне все файлы во всех подкаталогах (и оставьте их в структуре папок, как они есть сейчас). Я знаю, как найти и распечатать, что файлы:Скрипт для поиска файлов в подкаталогах

find . -name "something.extension" 

Дело в том, в этих каталогах много файлов, которые были использованы и раньше, но я не хочу, чтобы те, так что сценарий должен только найти меня файлы что соответствует какой-то шаблон пути, который:

xxx/trunk/xxx/src/main/resources 

ххх отличается каждый раз, и после того, как ресурсы есть еще некоторые папки, каталоги, которые отличаются на основе ххх.

В каждой верхней папке xxx содержится папка с именем «теги» (тот же уровень, что и магистраль), в которой хранятся предыдущие выпуски модуля (и в каждой версии есть файлы, которые я ищу, но мне не нужны устаревшие файлы).

Поэтому я хочу найти все эти файлы в подкаталогах этого шаблона пути, которые я задал, и скопировать в новое место, но оставить структуру папок, как сейчас.

Я использую Windows и cygwin.

Update

Я объединил ответ команды, которые «что другой парень» разместил ниже, и она работает. Чтобы быть ясным, у меня есть что-то вроде этого:

find */trunk/*/src/main/resources -name "something.extension" -exec mkdir -p /absolute/target/path/{} \; -exec cp {} /absolute/target/path/{} \; 

Спасибо.

+0

ликвидирует все матчи, которые происходят под каталог 'tags' достаточно, чтобы удовлетворить эту просьбу? Достаточно ли совпадение только по путям, которые включают «trunk»? –

+0

Я думаю, что пропустить все, что находится под папкой «xxx/tags», должно быть хорошо. 'xxx' - это имя модуля, и есть много модулей. Спасибо –

ответ

1

Вместо того, чтобы искать по всей текущей директории (.), просто поиск по каталогам, вы заботитесь о:

find */trunk/*/src/main/resources -name "something.extension" 
+0

Просто для записи, если расширение этих подстановок соответствует слишком большому количеству каталогов (и путь достаточно длинный), это может привести к максимальным ограничениям длины командной строки. –

+0

Хорошо, но как скопировать все найденные результаты в новый каталог, сохраняющий структуру старых папок? –

+0

@damian_pol '-exec mkdir -p/target/path/{} \; -exec cp {}/target/path/{} \; ' –

Смежные вопросы