2014-01-09 3 views
0

я делаю это в моем приложенииMAKEFILE - копирование/перемещение файлов в настоящем каталоге в другую папку

cat $(shell find $(MY_DIRECTORY) -name "*.filetype" -type f \(-path '.*/*/*' -prune -o -print \)) > $(MY_DIRECTORY)/files-concatenated.css 

Это успешно Объединяет все файлы в данном каталоге (за исключением подкаталогов - что это то, что мне нужно)

, но когда я делаю это

mv $(shell find $(MY_DIRECTORY) -name "*.filetype" -type f \(-path '.*/*/*' -prune -o -print \)) > $(MY_DIRECTORY)/files-collected 

или это

cp $(shell find $(MY_DIRECTORY) -name "*.filetype" -type f \(-path '.*/*/*' -prune -o -print \)) > $(MY_DIRECTORY)/files-collected 

Это будет выглядеть везде (включая подкаталоги), как я могу сделать это исключить подкаталоги тоже)

* Edit: Я использую

mv $(shell find $(MY_DIRECTORY) -name "*.filetype" -type f \(-path '.*/*/*' -prune -o -print \)) $(MY_DIRECTORY)/files-collected 

и

cp $(shell find $(MY_DIRECTORY) -name "*.filetype" -type f \(-path '.*/*/*' -prune -o -print \)) $(MY_DIRECTORY)/files-collected 
+0

Изменение команды за пределами поиска не может изменить то, что возвращает 'find'. Он может изменить то, что возвращает от find, действительные для операции (поскольку как 'mv', так и' cp' могут делать что-то значимое в каталогах, а 'cat' не может). Что вы получите, если вы запустите команду 'find' вручную? Это похоже на то, что вы ожидаете? Кроме того, ни 'mv', ни' cp' не записывают ничего значимого для stdout по умолчанию, поэтому ваше '>' перенаправление на этих строках неверно. –

+0

@EtanReisner find my_directory/-name ".filetype" -type f (-path '. */* /' -prune -o -print) возвращает то, что я хочу (файлы только в настоящем каталоге) – Kevin

+0

@EtanReisner выполняет кошку в make-файл будет только конкатенировать эти файлы, по какой-то причине mv и cp также будут выглядеть в подкаталогах, ошибка была ошибкой, у меня ее нет в моем исходном файле – Kevin

ответ

0

Если вам нужны только файлы в одном каталоге, почему вы делаете все это безумное находки? Не могли бы вы просто написать:

mv $(MY_DIRECTORY)/*.filetype $(MY_DIRECTORY)/files-collected 

??

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