перейдите в родительский каталог, затем:
for f in */abcd*;
do mv $f ./
done
это будет соответствовать mydir1/abcdfoo
, mydir2/abcdbar
и т. д. и перемещать их в pwd (который является родительским каталогом). Если вы хотите посмотреть только каталоги с именем mydir *, вы можете указать
for f in mydir*/abcd*;
do mv $f ./
done
Вы могли бы также сделать
find . -name "abcd*" -type f -exec mv {} ./ \;
он находит все обычные файлы (не dirs) с именем abcd * и перемещает их в pwd. Поиск выглядит рекурсивно из каталога, который вы указали после команды find, то есть "." в этом случае. Вы можете использовать абсолютные пути, такие как:
find /path/to/the/parent/dir -name "abcd*" -type f -exec mv {} /path/to/the/destination/dir/ \;
ВНИМАНИЕ: Я просто заметил это, когда попробовал. Если в разных каталогах есть несколько файлов с одинаковыми именами, например, mydir1/abcdfoo, mydir2/abcdfoo и т.д., Все, кроме одного, будут перезаписаны, и в родительском каталоге останется только один файл abcdfoo.