Если предположить, что могут быть конфликты имен и несколько расширений, это создаст уникальные имена, меняя пути к каталогам на тире (например, a/b/c.doc
станет a-b-c.doc
). Запустите это из папки, которую вы хотите свернуть:
# if globstar is not enabled, you'll need it.
shopt -s globstar
for file in */**; do [ -f "$file" ] && mv -i "$file" "${file//\//-}"; done
# get rid of the now-empty subdirectories.
find . -type d -empty -delete
Если вы можете гарантировать уникальные имена, это приведет к перемещению файлов и удалению подкаталогов. Вы можете изменить два .
s на имя папки и запустить ее из-за пределов указанной папки:
find . -depth \( -type f -exec mv -i {} . \; \) -o \( -type d -empty -delete \)