Для этого действительно нет формулы.
В некоторых местных командах есть место для царапин, где люди могут добавлять проекты. Вот что наш Мичиган выглядит так: https://wiki.ubuntu.com/MichiganTeam/Projects
Вы можете просто добавить раздел на свои страницы LocoTeam в вики, или просто добавить подстраницу к ваше пространство имен, если вы хотите работать над ним, прежде чем перемещать его туда. Например, https://wiki.ubuntu.com/MichiganTeam/Projects , а затем предложите его в список вашей локальной команды.
Вы не слишком конкретны в отношении какой активности вы хотите запустить, но вы можете проверить эти страницы для примеров того, как запускать события, это коллекция из всех видов местных команд о том, как они это делают:
https: //wiki.ubuntu. com / LoCoTeamKnowledgeBaseЕсли вы не можете найти там информацию, руководители локальной группы находятся в этом списке рассылки, если вы хотите задавать вопросы о том, чтобы что-то делать конкретно, возможно, кто-то уже сделал это и сделал все ошибки и узнали от него. В этом списке много опытных лидеров, поэтому, если вы хотите запустить мероприятие и ищете кого-то, кто проверит его для вас, я буду дальше.
Вы можете просто [ф5] в [ф6]ст Слэш-[ф7]elimited поле каждой строки и дам список [ф8]:
[Ф1]Вы можете столкнуться с проблемами ARG_MAX если ваш список имеет огромное количество имен каталогов, в этом случае использовать GNU на [F9] или [F10] для следующим образом:
[Ф3], а на [F11] это, то [ф12] подход не будет работать, если имена каталогов с пробелами – вы можете использовать [от f13] как линия разделитель ИЛИ просто указать [ф14] только разделить ввода на символы новой строки (как это было предложено ARG_MAX вместо):
[Ф4]в случае любого из поля содержит символ новой строки нужно было бы определить “истинные” символы конца строки и заменить только те символы новой строки, например, с [ф15]. Это будет примером для [ф16], но мне кажется, здесь слишком неправдоподобно.
Вы можете просто cut удалить 1 st slash- d поле каждой строки и предоставить список mkdir:
mkdir $(<dirlist.txt cut -d/ -f1)
$ cat dirlist.txt
A1/A2/A3
B1/B2/B3
C1/C2/C3
$ ls
dirlist.txt
$ mkdir $(<dirlist.txt cut -d/ -f1)
$ ls
A1 B1 C1 dirlist.txt
Вы можете столкнуться с проблемами ARG_MAX, если в вашем списке содержится огромное количество имен каталогов, в этом случае используйте GNU parallel или xargs следующим образом:
parallel mkdir :::: <(<dirlist.txt cut -d/ -f1)
xargs -a<(<dirlist.txt cut -d/ -f1) mkdir
Пока parallel, этот подход xargs не будет работать, если имена каталогов содержат пробелы - вы можете использовать \0 в качестве разделителя строк или просто проинструктировать xargs только разделить вход на символы новой строки (как предложено ARG_MAX ):
xargs -0a<(<dirlist.txt tr \\{n,0} | cut -d/ -f1 -z) mkdir # \\{n,0} equals \\n \\0
xargs -d\\n -a<(<dirlist.txt cut -d/ -f1) mkdir
В случае, если какое-либо из полей содержит символ новой строки, нужно будет идентифицировать окончание строки «true» и заменить только эти символы новой строки, например, [F15]. Это будет случай для awk, но я чувствую, что здесь слишком далеко.
Вы можете просто cut удалить 1 st slash- d поле каждой строки и предоставить список mkdir:
mkdir $(<dirlist.txt cut -d/ -f1)
$ cat dirlist.txt
A1/A2/A3
B1/B2/B3
C1/C2/C3
$ ls
dirlist.txt
$ mkdir $(<dirlist.txt cut -d/ -f1)
$ ls
A1 B1 C1 dirlist.txt
Вы можете столкнуться с проблемами ARG_MAX, если в вашем списке содержится огромное количество имен каталогов, в этом случае используйте GNU parallel или xargs следующим образом:
parallel mkdir :::: <(<dirlist.txt cut -d/ -f1)
xargs -a<(<dirlist.txt cut -d/ -f1) mkdir
Пока parallel, этот подход xargs не будет работать, если имена каталогов содержат пробелы - вы можете использовать \0 в качестве разделителя строк или просто проинструктировать xargs только разделить вход на символы новой строки (как предложено ARG_MAX ):
xargs -0a<(<dirlist.txt tr \\{n,0} | cut -d/ -f1 -z) mkdir # \\{n,0} equals \\n \\0
xargs -d\\n -a<(<dirlist.txt cut -d/ -f1) mkdir
В случае, если какое-либо из полей содержит символ новой строки, нужно будет идентифицировать окончание строки «true» и заменить только эти символы новой строки, например, [F15]. Это будет случай для awk, но я чувствую, что здесь слишком далеко.
Вам нужно установить ваш [Ф4] для [ф5], а затем присвоить каждому первому полю в отдельной переменной [ф6] и остальные поля в переменную [ф7] и просто работать на первом поле значение (или вы можете нажать [F8], чтобы один массив и использовать на [F9] для первого поля значение. ):
[Ф1]в АНСИ-Си со ссылкой [ф10] используется для борьбы с именами каталог, содержащий специальные символы.
обратите внимание, что на [F11] (может быть любой символ или строку) в конце будет из argv[0] до [F12] и в [от f13] будут содержаться остальные параметры, начиная с 1; без, что во второй команде первый параметр [ф14] будут потеряны.
В [С f15] с помощью АНСИ-Си со ссылкой [ф10], удаляет возможные длинный матч косая черта, после которой ничего до конца передачу параметров в нем, что это линия, которая читает Размер;
п. с:
удалить [ф16] перед [f17 в], чтобы создать эти каталоги. Замените [ф18] с [зг19] если ваш список разделенных символ nul вместо [ф20]ewline (якобы есть в имени каталога и конечно строки не должно быть имя каталога с нулевым либо символов).Содержание test.txt:
A 12"x4" dir/B b/C c
A1/B1/C1
A2/B2/C2
A3/B3/C3
Сценарий для создания папок A[123]:
file="test.txt"
while read -r line ; do
mkdir "${line%%/*}"
done < "$file"
Вывод ls:
A 12"x4" dir
A1
A2
A3
Для простого примера, как показано в примере ввода вопроса, просто используйте cut и передайте вывод в mkdir через xargs
cut -f1 -d '/' file.txt | xargs -L1 mkdir
. Для обработки случаев, когда имя каталога может содержать пробелы, мы могли бы добавить -d '\n' в список опций:
$ cat input.txt
A 1/B 1/C 1
A 2/B 2/C 2
A 3/B 2/C 2
$ cut -f1 -d '/' input.txt | xargs -d '\n' mkdir
$ ls
A 1 A 2 A 3 input.txt
Для более сложных вариаций, таких как A 12"x4" dir/B b/C c, как предложено @OleTange в комментариях, можно обратиться к awk, чтобы создать нулевой список вместо списка, разделенного новой строкой.
awk -F'/' '{printf "%s\0",$1}' input.txt | xargs -0 mkdir
@dessert в комментариях задается вопросом, можно ли использовать printf вместо cut и технически говорить его можно использовать, например, путем ограничения печатной строки только на ширину в 3 символа:
xargs -d '\n' printf "%.3s\n" < input.txt | xargs -L1 mkdir
Не самый чистый способ, но это доказывает, что printf можно использовать. Конечно, это становится проблематичным, если имя каталога становится длиннее 3 символов.
с использованием Perl:
perl -ne 'mkdir for /^(\w+)/' list.txt
Или
perl -ne 'mkdir for /^([^\/]+)/' list.txt
, если мы хотим принимать пробелы в именах dir
Параллель GNU может быть слишком сложной для задачи, но если вы собираетесь делать другие вещи для каждой строки, тогда это может быть полезно:
cat myfile.txt | parallel --colsep / mkdir {1}
parallel -a myfile.txt --colsep / mkdir {1}
Он корректно обрабатывает входные данные:
A 12"x4" dir/B b/C c
Параллель GNU может быть слишком сложной для задачи, но если вы собираетесь делать другие вещи для каждой строки, тогда это может быть полезно:
cat myfile.txt | parallel --colsep / mkdir {1}
parallel -a myfile.txt --colsep / mkdir {1}
Он корректно обрабатывает входные данные:
A 12"x4" dir/B b/C c
Для простого примера, как показано в примере ввода вопроса, просто используйте cut и передайте вывод в mkdir через xargs
cut -f1 -d '/' file.txt | xargs -L1 mkdir
. Для обработки случаев, когда имя каталога может содержать пробелы, мы могли бы добавить -d '\n' в список опций:
$ cat input.txt
A 1/B 1/C 1
A 2/B 2/C 2
A 3/B 2/C 2
$ cut -f1 -d '/' input.txt | xargs -d '\n' mkdir
$ ls
A 1 A 2 A 3 input.txt
Для более сложных вариаций, таких как A 12"x4" dir/B b/C c, как предложено @OleTange в комментариях, можно обратиться к awk, чтобы создать нулевой список вместо списка, разделенного новой строкой.
awk -F'/' '{printf "%s\0",$1}' input.txt | xargs -0 mkdir
@dessert в комментариях задается вопросом, можно ли использовать printf вместо cut и технически говорить его можно использовать, например, путем ограничения печатной строки только на ширину в 3 символа:
xargs -d '\n' printf "%.3s\n" < input.txt | xargs -L1 mkdir
Не самый чистый способ, но это доказывает, что printf можно использовать. Конечно, это становится проблематичным, если имя каталога становится длиннее 3 символов.
Содержание test.txt:
A 12"x4" dir/B b/C c
A1/B1/C1
A2/B2/C2
A3/B3/C3
Сценарий для создания папок A[123]:
file="test.txt"
while read -r line ; do
mkdir "${line%%/*}"
done < "$file"
Вывод ls:
A 12"x4" dir
A1
A2
A3
с использованием Perl:
perl -ne 'mkdir for /^(\w+)/' list.txt
Или
perl -ne 'mkdir for /^([^\/]+)/' list.txt
, если мы хотим принимать пробелы в именах dir
Параллель GNU может быть слишком сложной для задачи, но если вы собираетесь делать другие вещи для каждой строки, тогда это может быть полезно:
cat myfile.txt | parallel --colsep / mkdir {1}
parallel -a myfile.txt --colsep / mkdir {1}
Он корректно обрабатывает входные данные:
A 12"x4" dir/B b/C c
Для простого примера, как показано в примере ввода вопроса, просто используйте cut и передайте вывод в mkdir через xargs
cut -f1 -d '/' file.txt | xargs -L1 mkdir
. Для обработки случаев, когда имя каталога может содержать пробелы, мы могли бы добавить -d '\n' в список опций:
$ cat input.txt
A 1/B 1/C 1
A 2/B 2/C 2
A 3/B 2/C 2
$ cut -f1 -d '/' input.txt | xargs -d '\n' mkdir
$ ls
A 1 A 2 A 3 input.txt
Для более сложных вариаций, таких как A 12"x4" dir/B b/C c, как предложено @OleTange в комментариях, можно обратиться к awk, чтобы создать нулевой список вместо списка, разделенного новой строкой.
awk -F'/' '{printf "%s\0",$1}' input.txt | xargs -0 mkdir
@dessert в комментариях задается вопросом, можно ли использовать printf вместо cut и технически говорить его можно использовать, например, путем ограничения печатной строки только на ширину в 3 символа:
xargs -d '\n' printf "%.3s\n" < input.txt | xargs -L1 mkdir
Не самый чистый способ, но это доказывает, что printf можно использовать. Конечно, это становится проблематичным, если имя каталога становится длиннее 3 символов.
Содержание test.txt:
A 12"x4" dir/B b/C c
A1/B1/C1
A2/B2/C2
A3/B3/C3
Сценарий для создания папок A[123]:
file="test.txt"
while read -r line ; do
mkdir "${line%%/*}"
done < "$file"
Вывод ls:
A 12"x4" dir
A1
A2
A3
с использованием Perl:
perl -ne 'mkdir for /^(\w+)/' list.txt
Или
perl -ne 'mkdir for /^([^\/]+)/' list.txt
, если мы хотим принимать пробелы в именах dir