Czy chciałbym utworzyć wiele katalogów (na tym samym poziomie), a następnie podać listę nazw katalogów oddzielonych przecinkami (lub coś w tym celu)?
command-line
directory
coreutils
mkdir
BGroat
źródło
źródło
man mkdir
....man
nazwę i nazwę polecenia.man mkdir
„rodzaj” sugeruje możliwość tworzenia wielu katalogów naraz, nie jest to specjalnie wspomniane, ani jak to zrobić....
później[DIRECTORY]
, co oznacza, że argument można powtórzyć.DIRECTORY(ies)
Odnosi się więc do wszystkich przekazanychDIRECTORY
argumentów. Jednak komentarze „RTFM” czasami zapominają, że należy się czegoś nauczyć.Odpowiedzi:
Krótka odpowiedź
mkdir
bierze wiele argumentów, po prostu uruchomźródło
Możesz używać list do tworzenia katalogów, a to może być dość dzikie.
Kilka przykładów, aby ludzie o tym pomyśleli:
test01
dotest10
.Tak więc, jeśli dobrze to zrozumiałem i chcesz utworzyć niektóre katalogi, aw nich nowe katalogi, możesz to zrobić:
i uzyskaj sa1, sa2, ..., sa10 oraz w każdym katalogu 1, 2 i 3.
źródło
dash
którym jest domyślną wersją/bin/sh
Ubuntu.mkdir sa$(seq 0.1 0.1 1)
, wystarczy utworzyć jeden katalog o nazwie sa0.1, a pozostałe 0.2, 0.3, ..., 1. Jak uzyskać dziesiętne rozwinięcie nawiasu bez zapisywania całej listy?To bardzo proste, pozwala stworzyć strukturę katalogów, taką jak:
Możesz to zrobić za pomocą jednego polecenia, takiego jak to:
Uważaj, aby nie wprowadzić żadnych spacji
źródło
Zrób listę nazw żądanych katalogów, używając podziału wierszy zamiast przecinków jako separatora. Zapisz tę listę.
Powinieneś teraz mieć wszystkie katalogi wymienione na liście.
źródło
spaced dir
, utworzy dwa katalogispaced
i `katalog.junk\ dir
wlist
pliku podano dwa katalogijunk\
idir
. Wpadłem w panikę, kiedy zobaczyłem\
w nazwie katalogu.-p
flagą wymienioną w innych odpowiedziach. Jeśli tak,list
plik nie musi zawierać katalogów nadrzędnych jako własnych linii, zostaną one wykryte i utworzone automatycznie.Coś takiego? (dzięki Muru za
printf
wskazówkę)Możesz zawinąć w funkcję ułatwiającą obsługę:
źródło
printf "%s" "$1" | xargs -d, mkdir
powinno wystarczyć.Więc chcesz listę nazw katalogów oddzieloną przecinkami? Można to zrobić.
Shell + Coreutils
Ponieważ wszyscy publikują onelinerów, tutaj też jest mój (mkdir + podstawienie parametrów plus + przekierowanie powłoki).
AWK
AWK jest językiem przetwarzania tekstu, ale ma bardzo przyjemną
system()
funkcję, która wywoła domyślną powłokę i uruchomi polecenia zawarte w nawiasach (które muszą być ciągiem znaków).Lub możesz usunąć za
,
pomocągsub()
funkcji i wywołać,system("mkdir "$0)
ale może to stanowić problem, jeśli chcesz utworzyć katalogi ze spacjami w nazwiePyton
Pythonicznym sposobem na zrobienie tego samego byłoby odczytanie każdej linii, pozbycie się spływu
\n
, pchnięcie wszystkiego do jednej listy, iterowanie elementów listy i tworzenie katalogów według pozycji listy. Zauważ, że w poniższym przykładzie/home/xieerqi/dirList.txt
podano pełną ścieżkę do mojego pliku i tworzymy pełną ścieżkę każdego nowego katalogu, łącząc ciąg znaków/home/username/
i nazwę katalogu odczytaną z listy. W razie potrzeby zastąp własne wartościźródło
dir{1..1000}
. Powiedzmy, że chcesz utworzyć katalog według nazwy użytkownika, projektu lub lokalizacji geograficznej, na przykład miastaKomenda mkdir wymaga wielu argumentów, wystarczy uruchomić jak poniżej
Jeśli chcesz utworzyć wiele podkatalogów, możesz przekazać te argumenty w {}, jak pokazano poniżej (użyj tylko przecinków, aby oddzielić argument, bez spacji).
źródło