Как перенести тысячи файлов из списка?

Выберите Инструменты -> Параметры -> Общие настройки. Снимите флажок «Запустить Skype при запуске». Сохранить и выйти из Skype.

1
задан 12 August 2014 в 00:46

2 ответа

Следующий скрипт сначала копирует структуру каталогов из источника, а затем файлы из вашего списка в соответствующие папки. Строка if not line in ["", "\n"] предназначена для предотвращения ошибок, если файл содержит пустые строки.

#!/usr/bin/env python

import os
import shutil

source = "/path/to/source"; target = "/path/to/target"; filelist = "/path/to/filelist.txt"

for root, dirs, files in os.walk(source):
    for dr in dirs:
        dr = root+"/"+dr
        destdir = dr.replace(source, target)
        if not os.path.exists(destdir):
            os.makedirs(destdir)

with open(filelist) as lines:
    src = lines.readlines()

for line in src:
    if not line in ["", "\n"]:
        shutil.copyfile(line.replace("\n", ""),
            line.replace("\n", "").replace(source, target))

Как использовать

Скопировать сценарий в пустой файл, сохранить его как перемещение. py Добавьте соответствующие пути в раздел главы. Запустите его:
python /path/to/move.py
1
ответ дан 24 May 2018 в 04:44

Вы можете сделать это с помощью xargs довольно легко.

mkdir /newroot/
<filenames.txt xargs -I% bash -c 'mkdir -p /newroot/$(dirname "%" && cp "%" "/newroot/%"'

Жесткий бит гарантирует, что новая структура каталогов существует. Для этого мы используем dirname для получения имен каталогов, mkdir -p для их создания и, наконец, cp (или mv) для копирования / перемещения из одного в другой. Я оставил его в режиме копирования, чтобы вы могли проверить.

Я бы предложил проверить, что find /newroot/ -type f | wc -l и wc -l filenames.txt оба дают вам тот же номер впоследствии.

0
ответ дан 24 May 2018 в 04:44

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

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