Использование zsh:
cd /root
for subdir in subdir*
do
mv "$subdir"/**/*(.) "$subdir"
rm -r "$subdir"/*(/)
done
Это:
- заменяется на каталог "/root" (из вашего примера)
- снова перебирает каждый подкаталог с именем
subdir*
(из вашего примера :соответствие subdir1 и subdir1) - перемещает ожидаемый (, но будет соответствовать всем )соответствующим файлам (s )в этом подкаталоге в этот подкаталог. Здесь используется функция рекурсивного подстановки zsh
**
, ограниченная квалификатором glob *(.)
, который говорит :о любой записи в этом каталоге, которая является простым файлом - после перемещения файла рекурсивно удалить все подкаталоги внутри этого подкаталога; это снова использует квалификатор zsh glob
*(/)
, который указывает на соответствие записям, которые являются каталогами.
Kes
10.08.2021, 13:36
Ссылка