Это решение (для Linux) из http://www.arrfab.net/blog/?p=107 помогло для Seagate на 1 ТБ Портативному диску, который продолжал засыпать:
# sdparm --clear=STANDBY /dev/sdc -S
Диск теперь является сразу быстро реагирующим даже когда левый неактивный в течение часа. Еще не протестировал, сохраняется ли настройка через перезапуски и т.д., все же.
Попробуйте это
curdir=$(pwd)
for folder in /path/to/Files/*; do
[ -d "$folder" ] && cd "$folder" && ./conv.sh
done
cd $curdir
Или принятие Вас в /path/to/Files/
, это также работает
for f in *; do [ -d "$f" ] && cd "$f" && ./conv.sh; done; cd ..
Вы могли использовать F{1..20}
вместо *
для большей точности.
Можно использовать параллель GNU или xargs:
echo /path/to/Files/F{1..20} | tr ' ' '\n' |
xargs -L conv.sh
или:
echo /path/to/Files/F{1..20} | tr ' ' '\n' |
parallel conv.sh
Как отмечено Ole, ни один из вышеупомянутых методов не обрабатывает пространство правильно, т.е. dir name
был бы рассмотрен как два отдельных аргумента, та же проблема происходит, если имя каталога содержит новые строки.
Лучший способ обработать эти проблемы состоит в том, чтобы использовать пустой указатель в качестве разделителя, например, с GNU найдите:
find /path/to/Files -mindepth 1 -maxdepth 1 -type d -regex '.*/F[0-9]*' -print0 |
parallel -0 conv.sh
;
– Martín Canaval 31.01.2013, 03:57[
, или используйте[[
. – Chris Down 11.03.2013, 09:50