Этот простой сценарий работает, только если эти три каталога не содержат подкаталогов (более сложный рекурсивный алгоритм потребовался бы, чтобы обрабатывать тот случай).
Ответ колдуна хорош, но преимущество сценария как это по остроте Колдуна состоит в том, что при помощи xargs мы не разветвляем экземпляр CP для каждого файла, который мы копируем. Мы только разветвляемся, один экземпляр CP в течение каждого раза xargs генерирует командную строку, которая заполняет предел длины командной строки оболочки. Это имеет тенденцию быть огромным в современных системах, таким образом, довольно вероятно, что мы только выполнили один экземпляр общего количества CP, даже для сотен или возможно тысяч файлов в истории /
#! /bin/sh
# use tempfile(1) if available, otherwise use:
# EXCLUDEFILE="/tmp/excl.$$"
EXCLUDEFILE=$(tempfile -p excl)
# generate an exclude file, changing backup/ to history/
find backup/ -type f | sed -e 's:^backup/:history/:' > "$EXCLUDEFILE"
find history/ -type f -print0 | \
grep -z -Z -F -v -x -f "$EXCLUDEFILE" | \
xargs -0r -i{} cp {} inbox/
rm "$EXCLUDEFILE"
К вашему сведению подробная форма grep опций, используемых здесь:
grep --null-data --null --fixed-strings --invert-match \
--line-regexp --file "$EXCLUDEFILE"
и еще более компактная форма:
grep -zZFvxf "$EXCLUDEFILE"
Большинство опций является наиболее часто используемым или очевидным, но три может потребовать некоторого объяснения:
-z
или --null-data
говорит grep ожидать завершенный пустым указателем вход (от find -print0
)
-Z
или --null
говорит grep производить пустые нагруженные линии (для передачи по каналу в xargs -0
)
-x
или --line-regexp
говорит grep соответствовать только на целых сплошных линиях
Другая возможность заключается в том, что если вы привыкли уходить от ноутбука с закрытой крышкой, у вас может не получиться настроить linux на сон, или на то, чтобы заснуть за достаточно короткий промежуток времени. Я не беспокоюсь об этом (я просто опустил крышку), так что я не могу сказать вам, как это исправить (задайте более конкретный вопрос, если вы думаете, что это проблема). Windows, OTOH, кажется, засыпает довольно быстро по умолчанию[118119].