Сценарий оболочки для перемещения всех файлов из подпапок в родительскую папку

У меня есть куча папок в папке A. Я хочу переместить файлы из всех этих папок в A.

Или

Я хочу вырезать все файлы из дочерних папок и вставить их в родительскую папку.

Как это сделать?

50
задан 5 June 2012 в 09:46

2 ответа

Перейдите в каталог A и запустите

find . -mindepth 2 -type f -print -exec mv {} . \;

, что означает «найти все файлы в этом каталоге и его подкаталогах и выполнить mv с целевым каталогом. Для каждого найденного файла, чтобы переместить их в текущий каталог.

0
ответ дан 5 June 2012 в 09:46

Хорошо Вы могли создать файл и назвать его "cutme" (для создания файла, названного cutme в терминальном типе nano cutme. Для сохранения его нажимают, CTRL+X затем нажимают ENTER.), например, и вставка следующее в нем предполагающий, что:

  1. Вы хотите сделать это рекурсивно (В подпапках и подпапках тех подпапок)
  2. Вы хотите пропустить перемещение файла сценария
  3. У Вас есть полномочия переместить файлы в ту папку
  4. Файлы могут или не могут включать пробелы в свои имена

find * -type f -print -not -type d -and -not -regex 'cutme' -exec mv {} .. \;

Отметьте имя cutme в строке. Это должно совпасть со скриптом, который Вы запустите.

После создания файла и вставки вышеупомянутая строка, выполненная следующее в той же папке как сценарий:

chmod +x cutme. Это даст Вашему новому файлу флаг "Executable", таким образом, можно будет выполнить его как это: ./cutme.

4
ответ дан 5 June 2012 в 09:46

Другие вопросы по тегам:

Похожие вопросы: