Strona 1 z 1
[bash] jak odnaleźć dysk systemowy Windows
: 07 gru 2012, 18:50
autor: adamski9000
Witam
Chciałbym odnaleźć dysk systemowy Windows. Napisałem poniższy skrypt, ale nie działa wg moich założeń

Mianowicie mam w pliku zapisane podmontowane partycje. W pętli for wczytywana jest ścieżka do każdej partycji i komenda find powinna wyszukać określony katalog na danej parycji. Niestety komenda find zwraca pusty wynik.
Bez pętli, komenda find zwraca poprawny wynik.
Kod: Zaznacz cały
for PARTYCJA in `cat partycje.txt`
do
find /media/${PARTYCJA}/ -maxdepth 1 -type d -name "Users" -print > partycja_windows.txt
done
Proszę o jakieś sugestie co do rozwiązania zagadki. A może jest jakiś inny prostszy sposób wykrycia dysku systemowego windows ?
pozdrawiam
Re: [bash] jak odnaleźć dysk systemowy Windows
: 07 gru 2012, 22:45
autor: Rgl
Strzelam: zamień > na >>
Re: [bash] jak odnaleźć dysk systemowy Windows
: 08 gru 2012, 07:20
autor: Mały 1
Pokaż jeszcze zawartość "cat partycje.txt".
Re: [bash] jak odnaleźć dysk systemowy Windows
: 09 gru 2012, 15:47
autor: adamski9000
plik partycje.txt:
dba1
dba2
dba3
Re: [bash] jak odnaleźć dysk systemowy Windows
: 09 gru 2012, 20:43
autor: Mały 1
Twój skrypt nie może działać bo zrobiłeś w nim kilka błędów. Pamiętaj, że jeżeli chcesz wyszukać dowolny plik na dysku, to ten dysk musi być
wcześniej zamontowany.
Utwórz plik ze ścieżkami do partycji i nazwij go np. „dyski”.
Do tego pliku wklei ścieżki do swoich dysków np.:
Tutaj masz polecenie, które wyszuka katalog o nazwie "Users" i zapisze go do pliku „partycja_windows.txt”.
Kod: Zaznacz cały
awk '{system("find "$0" -type d -name \"Users\" >> partycja_windows.txt")}' dyski
Powyższe polecenie możesz uruchomić bezpośrednio w konsoli lub zapisać je w skrypcie . Polecenia nie musisz umieszczać w pętli, ponieważ awk czyta koleje linie z pliku (tz. ścieżki).
Re: [bash] jak odnaleźć dysk systemowy Windows
: 10 gru 2012, 17:53
autor: adamski9000
Dzięki za pomoc. Sugestia Rql była słuszna. Dodałem >> i zadziałało. Choć nie wiem dlaczego ! I strasznie mnie to denerwuje.
Rozwiązanie z AWK od Mały 1 też działa, ale tylko przy potoku >>. Z potokiem > nie działa jak należy. Tworzy plik, ale pusty. Ciekaw jestem przyczyny takiego stanu rzeczy.
Dzięĸi
Re: [bash] jak odnaleźć dysk systemowy Windows
: 10 gru 2012, 18:38
autor: beluosus
W Twoim skrypcie każdy wyraz (nie linia) jest odczytywana osobno, za każdym razem więc wykonywany jest dany operator:
Kod: Zaznacz cały
> nadpisuje plik
>> dopisuje na koniec pliku
Poza tym w bashu pliki linia po linii przetwarza się tak:
viewtopic.php?f=170&t=147035
Re: [bash] jak odnaleźć dysk systemowy Windows
: 03 sty 2013, 09:08
autor: tloszabno
Czy nie prościej do takiego czegoś użyć pythona ?
Re: [bash] jak odnaleźć dysk systemowy Windows
: 04 sty 2013, 22:47
autor: Rgl
tloszabno pisze:Czy nie prościej do takiego czegoś użyć pythona ?
Prościej?
Dla niektórych prościej może być użyć C lub pascala

Do wyszukania jednego katalogu uczyć się języka programowania?
Re: [bash] jak odnaleźć dysk systemowy Windows
: 05 sty 2013, 01:57
autor: adamski9000
Proszę o przykład, stwierdzimy czy prościej
Re: [bash] jak odnaleźć dysk systemowy Windows
: 05 sty 2013, 12:05
autor: tloszabno
Kod: Zaznacz cały
#! /usr/bin/env python
#-*- coding: utf-8 -*
from os import listdir
from os.path import isdir, join
out_file_name = "pliczek.txt"
#Folder charakterystyczny dla dysku z winda
win_folder = "/Windows/System32"
devs = listdir( "/media" )
for dev in devs:
if isdir(join("/media/", dev, win_folder)):
f = file(out_file_name, "w")
f.write(join("/media",dev) + "\n")
f.close()
break
Re: [bash] jak odnaleźć dysk systemowy Windows
: 05 sty 2013, 12:12
autor: ethanak
po co dwa joiny? wystarczy jeden z trzema parametrami.
Re: [bash] jak odnaleźć dysk systemowy Windows
: 05 sty 2013, 12:28
autor: tloszabno
racja , poprawione już