Ответ Йонга действительно близок, но аргументы mindepth
и maxdepth
относятся к начальному каталогу команда find
. Вы также можете принять во внимание тот факт, что у вас уже есть первые три части необходимой вам структуры каталогов. Работая с этого момента, вам действительно нужно пройти на один уровень глубже, чтобы получить информацию, которую вы ищете.Это дает дополнительное преимущество в виде исключения всего остального в каталоге , кроме , для того, что вам нужно. В следующем фрагменте кода используется ваша предопределенная переменная $ working_dir
, -mindepth
и -maxdepth
аргументы find
и расширение параметра, чтобы найти каждый каталог в позиции «4 глубины» в / media / data / temp1:
for my_dir in $(find ${working_dir} -mindepth 1 -maxdepth 1 -type d -print)
do
DirName=${my_dir##${working_dir}/}
## loop through, working on the 4th directory list
## one directory at a time
. . .
done
И FWIW, вы не должны начинать имена переменных с номер. Некоторые оболочки (например, BASH) будут интерполировать их как ссылки на позиционные параметры и не будут делать то, что вы ожидаете (например, $ 4thDirNameIs
будет расширен до позиционного параметра $ 4
, который может или может не существовать, за которым следует 'thDirNameIs').
Если вы спрашиваете, как изменить
master
dev
remotes/origin/foo
с по
master:dev:remotes/origin/foo
, тогда tr '\n' :
будет классическим UNIX-способом сделать это.
Что касается обрезки возможной последней строки новой строки, вы можете сначала сохранить вывод в переменную с помощью $()
, а $()
удалит его, или вы можете выполнить замену, сохранить результат в переменной, а затем выполнить variable=${variable%:}
, чтобы обрезать последнее двоеточие. (Дополнительные параметры см. в https://stackoverflow.com/questions/1654021/how-can-i-delete-a-newline-if-it-is-the-last-character-in-a-file.)
В моем случае будет работать разделение по пробельным символам, так как ветки git не могут содержать пробельные символы.
Так что я могу это сделать:
git branch --contains "$sha" | tr -d " *" | xargs
но для общего решения было бы полезно иметь возможность контролировать, что такое символ-разделитель, поэтому я действительно не считаю, что xargs, использованный выше, является хорошим общим решением.