2013-06-25 12 views

Odpowiedz

6
for dir in $(ls); do 
    mkdir "$dir/new-dir" 
done 
3
find . -type d | xargs -I "{x}" mkdir "{x}"/new-dir 

Jeśli chcesz zmniejszyć go do pierwszego poziomu katalogów używać

find . -maxdepth 1 -type d | xargs -I "{x}" mkdir "{x}"/new-dir 
0

Lepiej wymienić tylko te katalogi, w przeciwnym razie może pojawić się kilka błędów, gdy napotka plik zamiast z katalogu

for dir in $(ls -d */); do mkdir "$dir/2015" done

+0

Proszę, nie analizować wyjście 'ls'. Dziękuję Ci. –

3

niesamowite, że nigdy o to pytanie btained odpowiedzi sane:

shopt -s nullglob 
for i in */; do 
    mkdir -- "${i}newdir" 
done 
  • Jest w 100% bezpieczny dotyczące śmieszne symbole w nazwach plików (obowiązuje, symbole wieloznaczne, etc.).
  • The shopt -s nullglob tak, że glob rozwinie się do zera, jeśli nie ma dopasowań.
  • w celu oznaczenia końca opcji (jeśli istnieje katalog z nazwą zaczynającą się od łącznika, nie mylisz mkdir próbując zinterpretować go jako opcję).

To po cichu ignoruje ukryte katalogi. Jeśli trzeba wykonać tę operację ukrytych katalogów, wystarczy zamienić linię shopt -s nullglob brzmienie:

shopt -s nullglob dotglob 

The dotglob pliki tak, że globs również rozważyć ukryte/katalogów.

Jeśli chcesz tylko jedno wywołanie mkdir:

shopt -s nullglob 
dirs=(*/) 
mkdir -- "${dirs[@]/%/newdir}" 
+0

Niesamowite, że mnie też odebrano! Szalone downwotery, proszę zostawić notatkę, dziękuję. –

Powiązane problemy