Как скопировать много файлов с помощью командной строки?

У меня есть 200k папка файлов, которую я хочу разделить на 25k использование папок файлов cp или любая другая команда CLI, которая могла сделать вещь

3
задан 18 July 2017 в 15:37

3 ответа

Я использовал эту команду:

files=(*); 
num=$((${#files[@]}/8));
k=1
for ((i=0; i<${#files[@]}; i+=$num)); do 
tar cvzf files$k.tgz -- "${files[@]:$i:$num}"
((k++))
done

из этого сообщения: Как к tar.gz много файлов подобного размера в несколько архивов с пределом размера, совместно использованным Jacob Vlijm. Это сжимает все файлы в нескольких .tgz файлы так, чтобы было хорошо для меня. Можно изменить число для деления, здесь 8 дает мне 8 сжатых файлов с 25k файлами внутри + 1 сжатый файл только с 2 файлами внутри. Это сделало задание для меня.

1
ответ дан 1 December 2019 в 17:30

Можно использовать команду 'находки' с xargs и передачу много команды, чтобы сначала считать значение из файла и установить его на переменную, которая мы будем использовать его в новом имени каталога как идентификатор и затем создавать тот каталог, затем перемещают файлы в него и увеличивают идентификатор, противостоят и сохраняют его в файле для хранения последнего значения его.

вот команда,

find -maxdepth 1 -type f |xargs -n25000 bash -c 'readID=$(< ../ID.txt); echo mkdir directory_$readID; echo mv -v $@ -t directory_$readID/; echo $(expr ${readID} + 1)> ../ID.txt'

P.s. отмечают, что запишите идентификатор запуска в файле ID.txt прежде, чем выполнить вышеупомянутую команду

echo "1" > ../ID.txt

этот ID.txt, каждый выравнивает из текущего рабочего каталога.

после того как Вы проверили команду и видели то, что продолжает быть, происходят, затем удаляют команду 'эха' из этой команды'echo mv -v $@ -t directory_$readID/;'и позади 'mkdir', чтобы выполнить фактическое перемещение и сбросить ID.txt

echo "1" > ../ID.txt
0
ответ дан 1 December 2019 в 17:30

Вы могли смолить дерево каталогов, "разделить" его, и "кошка" оно назад вместе.

Это могло бы помочь. Не проверенный команды, но я помню, что это работает, от 400 лет назад.

https://unix.stackexchange.com/questions/1588/break-a-large-file-into-smaller-pieces

0
ответ дан 1 December 2019 в 17:30

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

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