Jak mogę przenieść pliki zawarte we wszystkich podkatalogach do bieżącego katalogu, a następnie usunąć puste podkatalogi?
Znalazłem to pytanie , ale dostosowując odpowiedź do:
mv * .
nie działał; Otrzymałem wiele ostrzeżeń wyglądających jak:
mv: wil and ./wil are identical
Pliki zawarte w podkatalogach mają unikalne nazwy.
źródło
-n, --no-clobber
nie zastępuj istniejącego pliku. Ty też możesz być zainteresowany-b, --backup
.Spróbuj tego:
Więcej informacji: Wypróbuj sam find-stamement, powinien dać ci listę ze wszystkimi plikami, które chcesz przenieść (pomiń
-print0
). Przykład:za pomocą
-print0
ixargs
tworzysz teraz listę instrukcji do wykonania. Te-J %
środki flag, wstaw element listy tutaj, więcmv $FILE .
jest wykonywany dla każdego pliku znaleziony.Powyższe działa dla Xargs BSD. Jeśli używasz wersji GNU (Linux), weź
-I %
zamiast-J %
źródło
Bash 4:
źródło
Przeniesie wszystkie pliki ze wszystkich podkatalogów do bieżącego katalogu.
Jeśli potrzebujesz czyszczenia, możesz użyć
Usunie wszystkie puste podkatalogi.
źródło
1 szybka sztuczka, działa tylko, jeśli twoje pliki mają rozszerzenia (z kropką):
źródło
Po prostu uruchom to polecenie :-)
mv **/*.* .
źródło
.
w nazwie, prawda?