Как? Погуглив... Нашел. Оказалось совсем несложно, как обычно..
# для директорий используем -type dХороший человек объяснил подробности. ";" - терминатор екзека и шелла одновременно, поэтому его в шелле надо заэксейпить. Ну а "{}" результат файнда построчно.
cd /home/target_dir
find . -type d -exec chmod 755 {} \;
# для файлов -type f
cd /home/target_dir
find . -type f -exec chmod 644 {} \;
# по маске имени с параметром -name
cd /home/target_dir
find . -type f -name '*.htm*' -exec chmod 644 {} \;
# для наглядности можно выполнить
find /home/target_dir/ -type f -name '*.php' -exec echo '-- '{} \;
Простенько двигаемся по папочкам и просто так считаем чего сколько. Для *nix придется сменить слеш в пути. А работать всё равно будет.
import os
# settings: src dir
sSrc='d:\\Install'
def show_all(sSrc,iDirs=0,iFiles=0):
for file in os.listdir(sSrc):
# full pathname
file=os.path.join(sSrc,file)
if os.path.isdir(file):
# if directories
print '['+file+']'
iDirs+=1
iDirs,iFiles=show_all(file,iDirs,iFiles)
else:
# else files
print ' '+file
iFiles+=1
return iDirs,iFiles
iDirs,iFiles=show_all(sSrc,0,0)
print """
total dirs: """,iDirs,"""
total files: """,iFiles
Если при попытке выполнить скрипт, мы видим что-то вроде.. "ImportError: No module named image" Сие озночает что надобно установить PIL. А как? А очень просто!
# для убунту sudo apt-get install python-imagingНу а для win придется сползать на оф страничку, скачать и установить соответствующую версию PIL.
Я даже не знаю к чему это я. Честно. Вот вдруг захотелось.
def next(n1,n2):
return n1+n2
n1=0
n2=1
nn=0
for i in range(1,30):
nn=next(n1,n2)
if i%2==0:
n1=nn
else:
n2=nn
print nn
Так вот это была полностью детская реализация. Вот она красота на самом деле (из книжки Гвидо ван Россума):
def fib(n):
a, b = 0, 1
for i in range(1,n):
print b,
a, b = b, a+b
fib(20)
Чтобы понять зачем после переменной запятая в принте, стоит позапускать софтинку в консольке с запятой и без. Для меня было ново. И вроде мелочь, а приятно.
Ад. По сравнению с VMWare. Странно но в Vista всё работало и в третьем VirtualBox-е. Здесь же речь пойдет о VirtualBox 2.2 С третьим под WinXP я как ни мучался - ничего у меня не вышло. Под вистой тройка взлетает без проблем. Итого, задача: есть Ubuntu Server как клиент ОС и WinXP как сервер ОС. Необходимо чтобы ось клиент ходила в интернет без проблем, видела машины в локальной сети и машины из локальной сети могли до неё достучаться. В моем случае расклад такой: есть wifi-роутер который раздает ипы для клиентов в диапазоне 192.168.1.2\254, сам он 192.168.1.1 понятно. Есть ноут, его ип - 2. На нем WinXP и VirtualBox с Ubuntu. Надо всю эту братию подружить. Ставится виртбокс без особых проблем, но с большим количеством воплей про то что это ПО не тестировалось на совместимость с WinXP (кстати в примере речь идет о WinXP SP3). Вопли игнорируем, виртбокс ставим. Поднимаем в нем Ubuntu. Добираемся до сетевых дел. Идем в настройки сети (для этого виртуальную машину надо остановить). Там устанавливаем два сетевых адаптера вот таким вот образом:
этот адаптер у нас будет смотреть в интернет, внешний мирВот так вот. Вроде проще некуда. Казалось бы. Дальше запускаем виртуальную машину и топаем в настройки сети. По умолчанию соединение которое создал VirtualBox (VirtualBox Host-Only Network) у меня было с адресом 192.168.56.1, менять его я не стал, но вообще уверен что изменить его совсем не проблемно. Идем править интерфейсы в /etc/networking/interfaces (кстати, на всякий случай про положение адаптеров можно почитать вот так dmesg | grep eth) Выглядеть интерфейсы после настройки у меня стали примерно так:а это тот самй пресловутый мост из VirtualBox Bridged Networking Driver
![]()
# The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth2 iface eth2 inet dhcp auto eth3 iface eth3 inet static address 192.168.56.10 netmask 255.255.255.0Пояснять тут в общем-то нечего. Разве что ip виртуалки в локальной сети зафиксировался на 10-м номере. Дальше перезапускаем сеть и всё. В общем-то всё очень просто. Но я честно уже не раз это делаю и всё равно забываю постоянно, что и как должно быть. Может теперь запомню :)
это финал после нехитрых sudo ifconfig eth2 up sudo ifconfig eth3 up sudo /etc/init.d/networking restartВот и всё. Ставим LAMP и девелопим в своё удовольствие в условиях значительно приближенных к боевым. Кстати мы при этом ничего не украли, софт-то свободный :) Приятного программирования.![]()
а это тот самй пресловутый мост из VirtualBox Bridged Networking Driver