Така штука проста з оболонкою Unix. Ось що ви можете зробити з моєю власною оболонкою Hamilton C (включаючи безкоштовну версію .) Ви могли б зробити щось дуже схоже з Cygwin bash.
mv *\* .
Якщо ваш каталог дійсно величезний, можливо, це може підкреслити занадто довгий командний рядок, щоб Windows перейшла до дочірнього процесу. ( Виклик Windows CreateProcess обмежує список аргументів символами Unicode 32K.) Але оболонка C не має обмежень внутрішньо, тому ви можете переглядати весь список таким чином:
foreach i ( *\* )
mv $i .
end
Для точки зору @ MarkAllen вище, цей вид передбачає, що не існує дублікатів імен. Якщо вони є, пізніші копії у списку перезаписують старіші. Якщо це викликає занепокоєння, ви можете переробити файли, mvлише якщо ви не перезаписуєтесь. :tОператор є оператором хвіст . -eОператор є файл існує тест .
foreach i ( *\* )
if ( -e $i:t ) then
echo -2 $i not moved because it already exists
else
mv $i .
end
end
Це все ще залишає порожні каталоги, які, можливо, ви не хочете після їх спорожнення. Це може бути наступна ітерація, якщо вона має значення.