Chcę utworzyć katalog z numerem na końcu, na przykład „dir1”, i zwiększyć ten numer, jeśli katalog już istnieje, dopóki nie trafi na nazwę katalogu, który nie istnieje, i muszę to zrobić w jednym wierszu w wiersz poleceń Linuksa, coś w stylu:
mkdir --increment dir$
Jak miałbym to zrobić?
Do tej pory mam to:
dir=output; n=0; mkdir -p $dir$n; if test -d $dir$n; then n=$((n+1)); echo $dir$n; fi
Ale to tylko echo następnej nazwy katalogu, potrzebuję go, aby rekurencyjnie wykonać polecenie.
command-line
bash
mkdir
01AutoMonkey
źródło
źródło
Jeśli chcesz tylko stopniowo tworzyć katalogi wymienione we właściwej kolejności, czy zamiast tego mogę polecić foldery o nazwach opartych na bieżącej dacie?
Stworzy katalogi o nazwach takich jak
dir-2014-03-02
(YYYY-MM-DD
, aby pojawiały się w kolejności alfabetycznej).Jeśli tworzysz więcej niż jeden katalog dziennie, możesz dodać bieżący czas do nazwy pliku. Zobacz,
man date
jak dostosować formatowanie wyjściowedate
.źródło
najpierw znajdź „największą” nazwę katalogu, uzyskaj liczbę i przyrost, który:
źródło
printf
tu potrzebować ? Czy prostaecho
praca nie będzie ?dir[0-9]*
zamiastdir*
.Zakładając, że twoje katalogi zawsze zaczynają się od „dir1” i że nie ma żadnych plików o nazwie $ dir * (tzn. Wszystkie są katalogami o numerach sekwencyjnych), możesz uciec od tego jednego linijki -
Zlicza liczbę plików zaczynających się od $ dir, a następnie dodaje jeden do tej liczby i tworzy nowy plik.
źródło
Dodatek do innych odpowiedzi: Jeśli potrzebujesz katalogów, aby posortować poprawnie według nazwy, możesz również wprowadzić nowy numer katalogu (NUM) z zerami wiodącymi do stałej długości.
Następujące elementy można skondensować w jednej linii lub osadzić w jednym z pozostałych rozwiązań.
Zakłada się, że NUM zaczyna się od co najmniej 1 cyfry i nie przekroczy ustalonej długości. Dostosuj odpowiednio do swoich wymagań.
źródło