2015-12-11 5 views
0

Я загрузил много файлов с S3, выкинул их все в новую папку под названием contracts. Теперь, в рамках контрактов, каждый файл находится в своей собственной имени (в виде чисел) папке, т.е. 55, 66 и т.д.Перемещение файлов из подпапок в родительскую папку

Ищет сценарий принять все файлы внутри все эти вложенные папок, перемещать их в родительскую папку (/ контракты) и удалить пустые папки.

ответ

1
yes | cp -a /contract/*/* /contract 

/договор означает, что ваш каталог договоров находится в/но вы можете изменить путь туда, куда вы хотите, например.

Это от и до пути. Обратите внимание на изменение cp на mv, если вы хотите переместить вместо копии. В вашем случае это будет работать yes | cp -a contracts/*/* contracts

+0

Спасибо. Но я получаю 'cp:/contract/*/*: Нет такого файла или каталога' –

+0

EDIT: он работал, снимая обратную косую черту, как:' yes | cp -a контракты/*/* контракты'. Пожалуйста, отредактируйте свой ответ, и я буду отмечать как правильный ответ. Благодаря! –

+0

Я отредактировал. Пожалуйста, отметьте мой ответ – Ghayel

2

Я хотел бы сделать (от только за пределами contracts):

mkdir contracts2 #create a sister folder 
find contracts -type f -print0 | #find all files in contracts 
    xargs -0 -I{} cp -l {} contracts2/ #hardlink them flatly to contracts2 

Теперь, если все выглядит хорошо (проверьте с tree contracts2), вы можете rm -rf contracts и mv contracts2 contracts.

Это должно быть очень быстрым (жесткое связывание выполняется очень быстро, и он, вероятно, выполнит только один экземпляр cp) и безопасен (вы не потеряете исходный каталог, пока не запустите на нем rm -rf).

1

Вы можете переместить все файлы с помощью find и mv вместе с опцией -exec:

find /path/to/contracts -type f -exec mv -i '{}' /path/to/contracts \; 

Предоставляя возможность -i к mv, он выдает запрос перед перезаписью файлов с одинаковыми именами. Если есть много файлов с одинаковыми именами, вы можете создать короткий скрипт для переименования файлов «на лету», чтобы избежать взаимодействия с пользователем.