Многие ответы, найденные в Интернете (в том числе в комментарии TNW), основаны на / sys / bus / usb / devices / 2-2 / power / level
или / sys / bus / usb. / devices / 2-2 / power / control
, которые устарели, начиная с ядра 2.6.something. Для новых ядер предлагаемая процедура состоит в том, чтобы отвязать и повторно привязать его драйвер, что обычно приводит к выключению питания:
# Find out which driver to unbind
tree /sys/bus/usb/devices/2-2.1 | grep driver
|-- driver -> ../../../../../../bus/usb/drivers/whatever
# Unbind the driver
echo 2-2.1 > /sys/bus/usb/drivers/whatever/unbind
# Rebind the driver
echo 2-2.1 > /sys/bus/usb/drivers/whatever/bind
Что-то вроде этого скрипта может сделать эту работу:
for i in `find /path -type d -name data`;
do
if [ "$i" = "s3/data" ]
then continue
else cd "$i" && zip Archive.zip *
fi
done
P.S. Замените /path
начальной точкой вашего дерева каталогов
find. -type d -name data -execdir zip -jr data/Archive.zip data ';'
Эта команда find
найдет каждый каталог data
в текущем каталоге и выполнит
zip -jr data/Archive.zip data
в каждом из каталогов sN
(родительский каталог каталогов data
). Это также заархивирует скрытые файлы.
Установка флага -j
на zip
удалит пути к файлам, добавленным в архив, и архив будет помещен в каталог data
.
Это работает, потому что -execdir
в основном выполняет cd
обращение к родительскому каталогу найденного объекта перед выполнением команды.
Чтобы избежать использования каталога s3
, используйте
find. -type d -name data \! -path "./s3/*" -execdir zip -jr data/Archive.zip data ';'
POSIXly (за исключением команды zip
, очевидно):
find. -path./s3 -prune -o -type d -name data -exec sh -c '
for dir do
(cd "$dir" && zip -r Archive.zip.)
done' sh {} +
Или сzsh -o extendedglob
:
for dir (./**/data~*/s3/*(/N)) (cd $dir && zip -r Archive.zip.)
Или, если вы не хотите рекурсивно искать папки data
:
for dir (./^s3/data(/N)) (cd $dir && zip -r Archive.zip.)
Или, чтобы быть еще более конкретным (здесь нет необходимости extendedglob
):
for dir (s[124]/data(/N)) (cd $dir && zip -r Archive.zip.)