find /thisdir -type f -name "*.ogg" -exec mv {} /somedir \;
Вы отчасти обменялись аргументами в пользу mv
Вот решение:
printf 'n file-%02d.tar\n' {2..100} |
tar -ML 716800 -cf file-01.tar Documents/ 2>/dev/null
где 100 число, больше или равное количеству объемов.
Править
Определение большого номера не должно быть проблемой, хотя я склонен не брать смешной.
Альтернатива могла быть "следующим объемом" сценарий, который можно установить с -F
опция,
tar -ML 716800 -F './myscript file' -cf file.tar Documents/ 2>/dev/null
затем в ./myscript
поместить
#!/bin/bash
prefix="$1"
n=1
while [[ -e "$prefix-$n.tar" ]]; do
((n++))
done
mv "$prefix.tar" "$prefix-$n.tar"
echo "$prefix-$n.tar"
Это будет выполняться в каждом конце объема и переместится file.tar
к соответствующему fileNNN.tar
. Для последнего объема не будет выполняться сценарий, таким образом, последнее имя тома останется file.tar
.
Редактирование 2
Я закончил со следующим разработанным решением.
Вот два сценария, один для создания и другого для извлечения:
#!/bin/bash
# CREATION SCRIPT
# save on file the initial volume number
echo 1 >number
# multi-volume archive creation
tar -ML 100000 -F './tar-multi-volume-script c file' -cf file.tar Documents2/ 2>&-
# execute the "change-volume" script a last time
./tar-multi-volume-script c file
и
#!/bin/bash
# EXTRACTION SCRIPT
# save on file the initial volume number
echo 1 >number
# execute the "change-volume" script a first time
./tar-multi-volume-script x file
# multi-volume archive extraction
tar -M -F './tar-multi-volume-script x file' -xf file.tar 2>&-
# remove a spurious file
rm file.tar
где ./tar-multi-volume-script
дают
#!/bin/bash
# TAR INVOKED SCRIPT
mode="$1"
prefix="$2"
n=$(<number)
case $mode in
c) mv "$prefix.tar" "$prefix-$n.tar" ;;
x) cp "$prefix-$n.tar" "$prefix.tar" ;;
esac
echo $((n+1)) >number
Очевидно, необходимо измениться на многие биты тут и там, чтобы адаптироваться к ситуации и быть уверенными, что она работала бы в cron
, это всегда - немного проблемы.
Когда в сомнении, прочитайте руководство...
http://www.gnu.org/software/tar/manual/html_node/Multi_002dVolume-Archives.html
или просто используйте следующую строку поиска в своем любимом интернет-поисковике:
"Архивы дольше, чем Одна лента или диск"
Тот раздел руководства tar GNU предоставляет подходящий сценарий (названный новым объемом) для использования с-F опцией команды tar. Вы могли настроить тот сценарий к своему вкусу, если Вы желаете.
приятного отдыха!
bash
встроенная функция назвала расширение фигурной скобки; это не может быть доступно во всех оболочках. Если Вы сталкиваетесь с сообщением об ошибке или неожиданным поведением, использоватьprintf 'n file-%02d.tar\n' $(seq 2 100) | (etc.)
вместо этого, который должен работать где угодно. – syntaxerror 07.11.2014, 23:40