отобразить результаты поиска

У меня есть эти результаты от find:

$ find subprojects -mindepth 1 -maxdepth 1 subprojects/install-globally-first subprojects/installation-test-project-custom-config subprojects/install-via-github subprojects/init-from-nothing subprojects/node-path-test subprojects/install-globally-with-nvm subprojects/installation-test-project subprojects/parallel-installs-of-suman 

Я хочу нанести следующие результаты:

 subprojects/install-globally-first/test.sh subprojects/installation-test-project-custom-config/test.sh subprojects/install-via-github/test.sh subprojects/init-from-nothing/test.sh subprojects/node-path-test/test.sh subprojects/install-globally-with-nvm/test.sh subprojects/installation-test-project/test.sh subprojects/parallel-installs-of-suman/test.sh на subprojects/install-globally-first/test.sh subprojects/installation-test-project-custom-config/test.sh subprojects/install-via-github/test.sh subprojects/init-from-nothing/test.sh subprojects/node-path-test/test.sh subprojects/install-globally-with-nvm/test.sh subprojects/installation-test-project/test.sh subprojects/parallel-installs-of-suman/test.sh 

(Все, что я делаю в этом случае, добавляет «/test.sh» к результатам … Я уверен, что хорошим решением является что-то вроде:

 $ find subprojects -mindepth 1 -maxdepth 1 | something (?) 

но я не знаю, что бы это было! Здесь довольно ново. Наверное, это более чем один способ сделать это, глядя на простейшее наиболее надежное решение.

Обратите внимание: поскольку файлы test.sh уже существуют в этих путях, я мог бы просто сделать это:

 find subprojects -mindepth 2 -maxdepth 2 -name "test.sh" 

Но я думаю, что я ищу, чтобы сделать это, предполагая, что эти файлы test.sh еще не существуют в файловой системе.

Вы можете использовать sed для «редактирования» каждой строки, добавив необходимый суффикс:

 find subprojects -mindepth 1 -maxdepth 1 | sed 's!$!/test.sh!' 

Обычный разделитель для sed – это, но я использовал ! потому что подстановка уже содержит / и я не хотел в конечном итоге создавать \/ визуальные конструкции в результате ( sed 's/$/\/test.sh/' ).

Если вы ищете файлы, которые могут существовать или еще не find subprojects -mindepth 1 -maxdepth 1 -type d , вы, вероятно, должны ограничить свою find чтобы выбрать только каталоги, с find subprojects -mindepth 1 -maxdepth 1 -type d


В комментариях вы также спрашиваете, как положить это в одну строку. Если ни один из ваших аргументов не содержит пробелов (например, subprojects/some where/test.sh ), вы можете xargs результат в xargs .

Чтобы добавить soemthing, в конце может также работать простое эхо:

 find subprojects -mindepth 1 -maxdepth 1 -exec echo {}/test.sh \; #OR to have them in variables IFS=$'\n';ff=($(find subprojects -mindepth 1 -maxdepth 1 -exec echo {}/test.sh \;));echo ${ff[@]} 

Если вы предпочитаете использовать GNU Parallel:

 find subprojects -mindepth 1 -maxdepth 1 | parallel echo {}/test.sh 

Это также упростит их выполнение:

 find subprojects -mindepth 1 -maxdepth 1 | parallel {}/test.sh