Как объединить все каталоги на нескольких уровнях? - PullRequest
0 голосов
/ 26 января 2020

Я нахожусь на Ма c Os 10.14.6 и у меня есть каталог с несколькими уровнями подкаталогов, каждый из которых содержит файлы.

например, enter image description here

Используя терминал, я хотел бы объединить их все в один каталог (поэтому у меня остались только файлы, но нет папок). Я хотел бы одну команду, которая может работать на несколько разных каталогов (независимо от имени). Следовательно, команда не может указывать имена каталогов.

Как я могу это сделать?


Шаги, которые я пробовал

Погуглив, похоже, команда mv идеальна , Итак, я попробовал это:

mv */*

Однако, это сливает только один уровень вниз. Например:

enter image description here

Как я могу получить его до go через все уровни. Кроме того, есть ли возможность автоматически удалять пустые каталоги? (Опционально, я имею в виду, что я могу опустить эту часть в команде, когда я не делаю, когда пустые каталоги удалены, поэтому пустые каталоги остаются).

1 Ответ

2 голосов
/ 26 января 2020

Просто используйте find, например

find . -type f -exec sh -c 'mv "$@" .' sh {} +

А чтобы удалить оставшиеся каталоги, используйте

find . -depth -type d -exec rmdir {} +
...