
У меня есть каталог под названием «public», содержащий тысячу подкаталогов, например:
public/63a/e9b/79a/file.pdf
public/64a/2cd/184/other_file.pdf
...
Моя цель — переместить все файлы, содержащиеся в этих подкаталогах, в главный каталог (т.е. public).
Думаю, мне нужна рекурсивная функция, чтобы сделать это.
Может кто-нибудь мне помочь?
решение1
Инструмент, позволяющий это сделать, уже является частью стандартной среды Linux:
find public -type f -exec mv {} public/ \;
Объяснение:
Мы хотим, чтобы find
файлы, но не словари ( -type f
) находились в public
и их подструктуре, и для каждого найденного файла выполнялась ( -exec
) команда, которая переносит его (представленного {}
) в общедоступный каталог.
Экранированная точка с запятой просто отмечает конец -exec
последовательности.