Ответы:
"-maxdepth 0" искать только в текущем каталоге, не углубляясь
"-type d" - только директории
"tar cjf" - заархивировать и сжать используя bzip2
"'{}'_$(date +%d-%m-%Y)" - {имя найденого каталога}_$(вывод команды date).tar.bz2
"\;" конец аргумента -exec
$() - выполнить то, что написано в скобках, и подставить получившийся вывод в строку. В данном случает там вызов команды date, результатом будет дата. То есть выражение примет какой-то такой вид: find ./* -maxdepth 0 -type d -exec tar cjf '{}'_20-09-2010.tar.bz2 '{}' \;
Это выполнение действий над файлами по шаблону (расширение tar.bz2, имя файла состоит из даты) в юниксоподобной ОС:
./* — во всех вложенных директориях текущей директории;
-maxdepth 0 — глубина поиска в 0 уровней (действия только тестируются на файлах, изменения не вносятся);
-type d — поиск директорий;
-exec — опция выполнения действий, где tar cjf — создание архива TAR, сжатого алгоритмом BZIP2; '{}'_$(date +%d-%m-%Y).tar.bz2 '{}' — собственно сам шаблон.
В шаблоне символ $ определенно означает строку, фигурные кавычки и точка с запятой объясняются структурой параметра -exec, экранирование символов (фигурных скобок непарными кавычками, точка с запятой — обратным слешем) требуется в некоторых случаях (значит и в этом, точно не объясню).
Все это есть в руководствах по конкретным командам, как непосредственно вызываемых в консоли командой man (man find, man tar), так и в интернетах.
Обрати внимание первый аргумент ./* , а второй -maxdepth 0
это обеспечивает выполнение tar только для директорий
содержащихся в текущей, исключая ее саму.
Перед \; нужен пробел.
Для директорий ./d1 ./d2 получим выполнение команд:
tar cjf ./d1_20_09_2010.tar.bz2 ./d1
tar cjf ./d2_20_09_2010.tar.bz2 ./d2
14 лет назад