я делаю это в моем приложении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
Изменение команды за пределами поиска не может изменить то, что возвращает 'find'. Он может изменить то, что возвращает от find, действительные для операции (поскольку как 'mv', так и' cp' могут делать что-то значимое в каталогах, а 'cat' не может). Что вы получите, если вы запустите команду 'find' вручную? Это похоже на то, что вы ожидаете? Кроме того, ни 'mv', ни' cp' не записывают ничего значимого для stdout по умолчанию, поэтому ваше '>' перенаправление на этих строках неверно. –
@EtanReisner find my_directory/-name ".filetype" -type f (-path '. */* /' -prune -o -print) возвращает то, что я хочу (файлы только в настоящем каталоге) – Kevin
@EtanReisner выполняет кошку в make-файл будет только конкатенировать эти файлы, по какой-то причине mv и cp также будут выглядеть в подкаталогах, ошибка была ошибкой, у меня ее нет в моем исходном файле – Kevin