Задать вопрос
atamanbest
@atamanbest

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

Всем привет. На диске есть несколько сот папок с вложенными файлами. Необходимо переместить определенные папки со всем содержимым в другую директорию. Имена перемещаемых папок известны. Пробовал уже и total commander, и командной строкой, ничего не получается. Может быть есть какой-то способ это сделать и адекватная инструкция?
  • Вопрос задан
  • 90 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 3
@Zzzz9
powershell
Понятно, что должна быть резервная копия.

В файл lst.txt на каждой новой строчке имя директории, повторов быть не должно, лежит там же где этот файл, этот файл сохранить например move_dir.ps1
$src = "\trz"
$dst = "\tt\dist"
Get-Content -Path ./lst.txt|ForEach-Object{
$srcPath = Join-Path -Path $src -ChildPath $_
$destPath= Join-Path -Path $dst -ChildPath $_
Move-Item -Path $srcPath -Destination $destPath
Write-Host "Moved $_ to $destPath"
}


$src = "\trz" #путь указать свой где лежат все директории для переноса
$dst = "\tt\dist" #путь куда перенести, должна существовать.

Если ранее PowerShell скрипты не запускались, то нужно разрешить, выполнив от администратора Set-ExecutionPolicy RemoteSigned
Ответ написан
Комментировать
@SunTechnik
Что именно делали через командную строку и что не получилось?
Так-то find в помощь.
Насколько длинный список имён папок, которые надо переместить?

Как направление:
find . type d -name "имя папки" >>/tmp/list
Повторяем для каждого имени. Если список имён большой, оформляем через цикл for
Потом с помощью sed/vi/другой редактор дописываем в начало строки mv, в конце папку куда переместить.
Проверяем, что нет имён с пробелами. Их заключаем в одинарный кавычки. (ну или сразу все имена заключить в кавычки)
Запускаем полученный скрипт.

Всё это можно завернуть сразу в один скрипт, но если что-то пойдёт не по плану, данные можно и не найти.
И даже в текущем запуске через скрипт, есть риск конфликтов имён и перезаписи файлов...
Ответ написан
xotkot
@xotkot
хорошо есть и хорошо весьма
это простая операция для реализации которой не нужны мегакомбайны
cp -r `<dirs.txt` outdir/
где dirs.txt содержит построчный список путей к директориям которые нужно скопировать
cp это стандартная unix утилита, которой можно воспользоваться и под виндой через wsl
смотрим если всё скопировалось нормально то удаляем ненужное
rm -r `<dirs.txt`

ну или можно одной командой mv
mv `<dirs.txt` outdir/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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