Вот возможный шаблон для систем, которые не поддерживают параметр mv -t
:
find ID1/*/ -type f -print0 | xargs -0 -I{} mv {} ID1
-type f
- искать только файлы
-print0
- выводить список файлов в стандартный вывод, разделенный символами NUL
Утилита xargs
получит вывод от find
на свой стандартный ввод. Варианты xargs
:
-0
- принять разделенный NUL ввод
-I{}
- использовать строку {}
, чтобы указать xargs
, где заменить шаблон командной строки с фактическим вводом (по одному за раз)
mv {} ID1
- команда mv
, вызываемая xargs
, где {}
будет заменяться путем к одному файлу за раз. mv
будет вызываться столько раз, сколько файлов будет передано из find
.
В al oop для охвата всех каталогов:
for dir in ID*/ ; do
find $dir/*/ -type f -print0 | xargs -0 -I{} mv {} $dir
done