Согласите несколько строк в «Специальный символ» -дилитимированной строки

Ответ Йонга действительно близок, но аргументы 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').

2
13.08.2018, 02:52
2 ответа

Если вы спрашиваете, как изменить

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.)

5
27.01.2020, 21:53

В моем случае будет работать разделение по пробельным символам, так как ветки git не могут содержать пробельные символы.

Так что я могу это сделать:

git branch  --contains "$sha" | tr -d " *" | xargs

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

1
27.01.2020, 21:53

Теги

Похожие вопросы