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.:

Kod: Zaznacz cały

/media/9E7C0BAC8C0B87DD1
/media/hd.Model
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ż