[BASH] lista di file di una partizione

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Soulcyber
Prode Principiante
Messaggi: 23
Iscrizione: lunedì 11 giugno 2012, 20:48

[BASH] lista di file di una partizione

Messaggio da Soulcyber »

Salve ragazzi, sono nuovo alla programmazione linux e a scuola mi è stato dato un esercizio.
Praticamente devo controllare solo le partizioni di tipo /dev/sd[x][n] dove x è una lettera e n un numero le altre le devo ignorare

Il codice che ho scritto è questo :

Codice: Seleziona tutto

#!/bin/bash

#in questo modo eliminiamo la prima partizione che è sda, che è sempre
#la più grossa visto che contiene tutte le altre
sudo fdisk -s /dev/sd*[0-9] > monfdisk.txt

echo "Le partizioni di tipo sd[x][n] e la loro dimensione sono: "
echo ""
awk  '{print $1,  $2}' < monfdisk.txt
echo ""
echo "----"

echo "La partizione più grande è : "
awk -F: '{ print $1, $2 }' monfdisk.txt | sort -rg |head -n 1

echo "----"

exit 0
fino a qui funziona, ma volevo sapere se andava bene per quello che devo fare.
Cioè, oltre a controllare e a stampare la partizione più grossa, devo anche prendere in input una variabile dall'utente, e che poi mi mostri tutti i file presenti all'interno della partizione superiori a quella dimensione e di cui l'utente è proprietario.
A questo punto dall'elenco dei file, devo dare la possibilità all'utente di eliminarli da quella lista e riaggiornare la lista dei file della partizione, questo all'infinito, finchè l'utente non preme una determinata combinazione di tasti per uscire dal while e terminare il programma.

Ricapitolando, il mio problema è riuscire a confrontare la variabile inserita dall'utente con la dimensione dei file della partizione più grande, e allo stesso tempo facendogli visualizzare solo i file di cui è proprietario (credo che il tutto vada in un while true, visto che deve essere svolta continuamente, fino a quando l'utente non decide di uscire). Poi il resto continuo da solo e se ho problemi vi faccio sapere :)

grazie mille per l'attenzione ^^
Avatar utente
bingel
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4026
Iscrizione: lunedì 3 aprile 2006, 10:17

Re: [BASH] lista di file di una partizione

Messaggio da bingel »

Uno spunto, per i dettagli vedi tu:

Codice: Seleziona tutto

#!/bin/sh
partizione=$(sudo fdisk -s /dev/sd*[0-9] | sort -gk2 | tail -n 1 | cut -d ":" -f 1)
echo "La partizione più grande è : "
echo $partizione
echo "Inserire la dimensione in bytes:"
while read dimensione; do
echo "Di seguito i file appartenenti all'utente $(whoami) di dimensione superiore a $dimensione bytes:"
find $(grep "$partizione" /etc/mtab | cut -d " " -f 2) -size +$dimensione\c -uid $(id -u)
echo
echo "Inserire un'altra dimensione in bytes o premere CTRL+C per terminare:"
done
ovviamente se le partizioni più grandi fossero due (avendo entrambi la stessa dimensione), solo una di esse verrebbe mostrata. Quindi diciamo che è più un esercizio che altro.
Soulcyber
Prode Principiante
Messaggi: 23
Iscrizione: lunedì 11 giugno 2012, 20:48

Re: [BASH] lista di file di una partizione

Messaggio da Soulcyber »

innanzitutto grazie mille per la cortesia di rispondere, comunque mi ha fatto capire molte cose, stavo cercando di mettere il tutto in una forma un po' più curata a livello estetico e magari semplice di interfaccia

Codice: Seleziona tutto

#!/bin/bash
while true; 
do
   echo
   echo "premi d per far partire il confronto tra partizioni"
   echo "premi c per eliminare un file dalla lista"
   echo "premi x per chiudere il programma"
   echo "================================"

   select opzione in $opzione;
   do
      case "$opzione" in
         d)
            #in questo modo eliminiamo la prima partizione che è sda, che è sempre
            #la più grossa visto che contiene tutte le altre
            partizione=$(sudo fdisk -s /dev/sd*[0-9] | sort -gk2 | tail -n 1 | cut -d ":" -f 1)
            echo "La partizione più grande è : "
            echo $partizione

            echo "----"
            ;;
          
         c)
            echo "visualizza lista file, inserendo m"
            while read dimensione; 
            do
            #visualizza lista file della partizione tenendo conto di m                    
            find $(grep "$partizione" /etc/mtab | cut -d " " -f 2) -size +$dimensione\c -uid $(id -u)
            echo "se vuoi cancellare un file premi e"
            echo "se vuoi tornare al menu principale premi b"
            
            select opzione2 in $opzione2;
            do
               case $opzione2 in
                 e)
                   #pezzo di script che porta alla cancellazione
                   #di un file nella partizione
                   break 2
                   ;;
                 b)
                   break 2
                   ;;
                 *)
                   echo "inserisci uno dei 2 caratteri per continuare"
                  break
                  ;;
               esac
            done
     done      
x)
     echo "Chiusura Script, Arrivederci" 
     exit 0
     ;;
  *)
   echo "Schiaccia un tasto valido"
     break
     ;;
       esac

       echo
       echo "================================"
    done
done

exit 0
non so perchè ma mi da un errore e non capisco dove sia,ho unito il tuo al mio un po' velocemente, (sono le 1 di notte ><), provando il tuo ho visto che escono anche i file con permessi negati, e devo trovare il modo di toglierli poichè quelli non riuscirei a eliminarli normalmente :)
grazie mille ancora, domani magari se hai tempo di darmi un'ultima dritta te ne sarei veramente grato, adesso vado a letto che sono stravolto ^^
Avatar utente
bingel
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4026
Iscrizione: lunedì 3 aprile 2006, 10:17

Re: [BASH] lista di file di una partizione

Messaggio da bingel »

mancano ";;" prima di "x)" ...ma non funzia lo stesso. Va in loop. Ora non ho tempo per darci un'occhiata e soprattutto capire cosa vuoi fare.
Soulcyber
Prode Principiante
Messaggi: 23
Iscrizione: lunedì 11 giugno 2012, 20:48

Re: [BASH] lista di file di una partizione

Messaggio da Soulcyber »

praticamente vorrei un menu, che mi mostra delle opzioni, poi da quel menu posso entrare nel sub menu che è quello di inserimento di m e cancellazione di un file, quando ho finito li cliccando un tasto del case, vorrei tornare al menu principale, se invece l'utente continua a schiacciare tasti a caso, rimane li informandolo che si attende la pressione di un tasto valido.

Spero di essere stato piu chiaro, diciamo che non so se è il metodo migliore quello che ho utilizzato (un case dentro un case), ma mi sembrava abbastanza semplice (anche se nemmeno io capisco dove sia l'errore)
Avatar utente
bingel
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4026
Iscrizione: lunedì 3 aprile 2006, 10:17

Re: [BASH] lista di file di una partizione

Messaggio da bingel »

Beh, per capire dove sta l'errore credo che dovresti prima studiare il significato dei comandi che utilizzi:

http://www.linuxquestions.org/questions ... -o-317671/
Soulcyber
Prode Principiante
Messaggi: 23
Iscrizione: lunedì 11 giugno 2012, 20:48

Re: [BASH] lista di file di una partizione

Messaggio da Soulcyber »

Ok ad una prima occhiata mi pare di capire che è sbagliato il concetto dell'uso di select e case in quel modo (ad esempio gli do select su opzione che non ha nessun valore ed è sbagliato),e forse mi pare di aver capito che mi convenga usare solo uno dei 2 costrutti e non entrambi adesso non ho tempo per mettermi giù e sistemare il codice che devo studiare altre cose
Oggi pomeriggio troverò il modo di lavorarci e ti riposto il risultato ;)
grazie ancora ^^
l3on4rdo

Re: [BASH] lista di file di una partizione

Messaggio da l3on4rdo »

Ad occhio e croce, la struttura logica per quello che vuoi fare è:

Codice: Seleziona tutto

#!/bin/bash

while true; do
	echo
	echo "premi d per far partire il confronto tra partizioni"
	echo "premi c per eliminare un file dalla lista"
	echo "premi x per chiudere il programma"
	echo "================================"
	opzione1="d c x"
	select opzio1 in $opzione1; do
		case "$opzio1" in
		d)
			echo "Hai scelto il confronto tra partizioni"
			;;
		c)
			echo "hai scelto di operare sui file"
			echo "visualizza lista file, inserendo m"
			echo "se vuoi cancellare un file premi e"
			echo "se vuoi tornare al menu principale premi b"
				opzione2="m e b"
				select opzio2 in $opzione2; do
					case $opzio2 in
					m)
						echo "hai scelto di visualizzare la lista dei file"
						;;
					e)
						echo "hai scelto di cancellare un file"
						;;
					b)
						echo "hai scelto di tornare al menu principale"
						break 2
						;;
					*)
						echo "le opzioni sono ${opzione2[@]}"
						;;
					esac
				done
				;;
		x)
			echo "hai scelto di uscire dallo script"
			exit 0
			;;
		*)
			echo "le opzioni consentite sono ${opzione1[@]}"
			;;
		esac
	done
done
(ho chiamato lo script Inception... perché c'è un case dentro un case ;D )

Tocca però fare un paio di osservazioni.
Scritta così, la procedura di scelta è abbastanza fuorviante.
Il select, infatti, ti mostra una lista e tu scegli con il numero associato alla voce.
Hai pertanto le voci, che sono lettere, e la scelta che è data da un numero.
Almeno per quanto mi riguarda, nel testare lo script, i due emisferi hanno iniziato a fare a neurone di ferro!
Chiarisco con un esempio:

Codice: Seleziona tutto

l3on4rdo@l3on4rdo-laptop:~/Scrivania$ ./inception.sh 

premi d per far partire il confronto tra partizioni
premi c per eliminare un file dalla lista
premi x per chiudere il programma
================================
1) d
2) c
3) x
#? 6
le opzioni consentite sono d c x
#? d
le opzioni consentite sono d c x
#? c
le opzioni consentite sono d c x
#? 1
"Hai scelto il confronto tra partizioni"
Pertanto, struttura logica a parte, io gestirei la faccenda in modo differente.

Ciao
Soulcyber
Prode Principiante
Messaggi: 23
Iscrizione: lunedì 11 giugno 2012, 20:48

Re: [BASH] lista di file di una partizione

Messaggio da Soulcyber »

Si esatto leonardo hai capito il problema, e hai ragione nel dire che in questo modo però le opzioni diventano 1,2,3 e quindi non vanno bene perchè rendono male l'idea a l'usabilità peggiore assolutamente. adesso provo a modificarlo un po'

PS: Bellissimo il nome Inception :lol:

Ecco qua dopo un po' di lavoro e ho trovato un buonissimo esempio su internet che ho modificato a piacimento

Codice: Seleziona tutto

#!/bin/bash

function menu {

select menusel in "Visualizza la lista dei file della partizione inserendo m" "Cancella un file" "Esci"; 
do
	case $menusel in
		"Visualizza la lista dei file della partizione inserendo m")
			echo "parte codice per visualizzare" ;;
	
		"Cancella un file")
			echo "parte codice per cancellare" ;;
	
		"Esci")
			echo "Chiusura Script"
			exit 0 ;;
	
	esac

	break

done
}

while true; 
do 
	menu; 
done
unica cosa che non so è questa, quando io cancello un file voglio che la lista dei file sia aggiornata subito senza uscire dal case di cancellazione, e chiedere all'utente se vuole continuare a cancellare o tornare al menu principale
l3on4rdo

Re: [BASH] lista di file di una partizione

Messaggio da l3on4rdo »

Beh, basta che cancelli il file e poi rifai la lista del contenuto.
No!?
Soulcyber
Prode Principiante
Messaggi: 23
Iscrizione: lunedì 11 giugno 2012, 20:48

Re: [BASH] lista di file di una partizione

Messaggio da Soulcyber »

Ecco qua con qualche passo avanti, si hai ragione leonardo e infatti avevo già sistemato semplicemente ricopiando la funzione :D

Codice: Seleziona tutto

#!/bin/bash


partizione=$(sudo fdisk -s /dev/sd*[0-9] | sort -gk2 | tail -n 1 )
		echo
      echo "La partizione sd[x][n] più grande è : $partizione MB "
		echo
function menu {

select menusel in "Visualizza la lista dei file della partizione inserendo m in bytes" "Cancella un file" "Esci"; 
do
	case $menusel in
		"Visualizza la lista dei file della partizione inserendo m in bytes")
			echo "Inserisci m, visualizza solo i file > di m nella partizione: " 
			read dimensione
			echo "Di seguito i file appartenenti all'utente $(whoami) di 		dimensione superiore a $dimensione bytes:"
			find $(grep "$partizione" /etc/mtab | cut -d " " -f 2) -size +$dimensione\c -uid $(id -u)
		;;
	
		"Cancella un file")
			echo "Inserisci il nome del file che vuoi cancellare" 
			read nomefile
			if [ ! -e $nomefile]; then
				echo "file non trovato"
			else
				rm "$nomefile"
				echo "la lista aggiornata è la seguente : "
				find $(grep "$partizione" /etc/mtab | cut -d " " -f 2) -size +$dimensione\c -uid $(id -u)
			fi
		;;
		"Esci")
			echo "Chiusura Script"
			exit 0 
		;;
	
	esac

	break

done
}

while true; 
do 
	menu; 
done
Ora però per la cancellazione non va perchè devo trovare il modo di trovare il file partendo dalla path della partizione.
Credo che devo usare il comando find in modo che parta a cercare in tutte le cartelle di $partizione
qualcosa come find $partizione -iname "$nomefile", ma così non va

Grazie comunque di aver perso tempo a leggere questo thread e ad aiutare la mia nabbagine semi-completa in materia
l3on4rdo

Re: [BASH] lista di file di una partizione

Messaggio da l3on4rdo »

La dichiarazione della funzione sarebbe da spostare in un "posto" più consono.
Appena ho un po' di tempo do una letta allo script e, se trovo qualche cosa da dirti, te la dico :)

Ciao
Soulcyber
Prode Principiante
Messaggi: 23
Iscrizione: lunedì 11 giugno 2012, 20:48

Re: [BASH] lista di file di una partizione

Messaggio da Soulcyber »

ok grazie mille ;)

ho cercato tutto il pomeriggio su internet come trovare il file e rimuoverlo partendo dalla path presente in $partizione, ma non sono ancora venuto a capo di niente, non riesco a trovare nulla che si avvicini a quello che devo fare,

come si fa una ricerca del file dentro la partizione e salvare tutto il path completo? Tipo /dev/sda1/lol/file.txt almeno poi potrei dare in pasto a rm tutto il path che quindi non dovrebbe avere problemi ad eliminare il file, cioè almeno è quello che credo non so se sia realmente fattibile
Avatar utente
bingel
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4026
Iscrizione: lunedì 3 aprile 2006, 10:17

Re: [BASH] lista di file di una partizione

Messaggio da bingel »

Non esiste un file che abbia un path di questo tipo:

/dev/sda1/..../..../file.txt

in quanto /dev/sda1 non è né un file né una directory ma un dispositivo a blocchi virtuale cui per potervi accedere dovrà essere montato all'interno del file system (di solito "dentro" una directory) la quale fungerà da mountpoint del dispositivo stesso.

Come puoi vedere impartendo il comando "mount", ogni partizione (che appunto è un dispositivo a blocchi) è infatti montata in un determinato punto di mount.
Per agire su un file che si trova dentro una determinata partizione (per es.: /dev/sda1) non dovrai quindi utilizzare il percorso del dispositivo ma quello del suo punto di mount.

Per esempio se /dev/sda1 è montato in /home, per cancellare il file denominato file.txt che si trova nella partizione /dev/sda1, dovrai impartire questo comando:

Codice: Seleziona tutto

rm /home/file.txt
Ultima modifica di bingel il martedì 12 giugno 2012, 21:15, modificato 3 volte in totale.
Avatar utente
bingel
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4026
Iscrizione: lunedì 3 aprile 2006, 10:17

Re: [BASH] lista di file di una partizione

Messaggio da bingel »

...quindi per rimuovere il file denominato file.txt che si trova dentro /dev/sda1, dovrai prima risalire al mount point di /dev/sda1:

Codice: Seleziona tutto

grep "/dev/sda1" /etc/mtab | cut -d " " -f 2
che all'interno del tuo script diventerà qualcosa del genere:

Codice: Seleziona tutto

mountpoint=$(grep "$partizione" /etc/mtab | cut -d " " -f 2)
oppure

Codice: Seleziona tutto

mountpoint=$(grep "$partizione" /proc/mounts | cut -d " " -f 2)
Soulcyber
Prode Principiante
Messaggi: 23
Iscrizione: lunedì 11 giugno 2012, 20:48

Re: [BASH] lista di file di una partizione

Messaggio da Soulcyber »

Ecco, mi hai chiarito qualche idea, non avevo capito che fossero delle partizioni virtuali montate dentro delle directory :)
Ora mastricciando un po' ho pensato che dovrebbe venire una cosa pressapoco così

Codice: Seleziona tutto

partizione=$(sudo fdisk -s /dev/sd*[0-9] | sort -gk2 | tail -n 1 )
echo "La partizione sd[x][n] più grande è : $partizione MB "
echo "Inserisci il nome del file che vuoi cancellare" 
read filename
partiz= $(grep "$partizione" | cut -d ":" -f 1)
mountpoint=$(grep "$partiz" /etc/mtab | cut -d " " -f 2)
echo "$mountpoint"
rm $mountpoint/$filename
Questo perchè $partizione contiene sia il valore del path, cioè /dev/sda1 sia il valore in MB che mi serve da stampare in alto.
quindi devo prima togliere il numero da partizione e lasciare solo /dev/sda1 e questo lo farei con partiz, poi con il comando che mi hai dato tu su mountpoint dovrei trovare la directory che la monta, ma non mi va, dov'è che sbaglio?
Inoltre rm se faccio così lui mi toglie solo il file che sta ad esempio in /home/ciao.txt , se invece il file messo dall'utente sta in qualche sottocartella di home come faccio a trovarlo?
Avatar utente
bingel
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4026
Iscrizione: lunedì 3 aprile 2006, 10:17

Re: [BASH] lista di file di una partizione

Messaggio da bingel »

Innanzitutto la dimensione della partizione ottenuta tramite il comando "fdisk -s" non è espressa in MB ma in blocchi (dovrebbe trattarsi di blocchi da 1KB ma non ne sono certo tuttavia se così fosse potremmo dire che la dimensione è espressa in KB ).
In secondo luogo ribadisco che dovresti innanzitutto studiarti il significato e le modalità d'uso dei vari comandi impiegati perché a me sembra che tu stia andando un po' a tentoni e in questo modo non può che uscirne un pessimo lavoro.
Se hai le idee poco chiare su come realizzare lo script potresti inoltre provare a schiarirtele abbozzando un algoritmo (usando il classico diagramma a blocchi) che schematizzi ciò che vuoi fare traducendolo solo in un secondo momento anche in "codice bash".

Detto ciò:

Codice: Seleziona tutto

partizione=$(sudo fdisk -s /dev/sd*[0-9] | sort -gk2 | tail -n 1 | cut -d ":" -f 1)
dimensione=$(sudo fdisk -s /dev/sd*[0-9] | sort -gk2 | tail -n 1 | cut -d ":" -f 2) #la dimesione è espressa in blocchi
mountpoint=$(grep "$partizione" /etc/mtab | cut -d " " -f 2)
Questo codice non ha senso:

Codice: Seleziona tutto

partiz= $(grep "$partizione" | cut -d ":" -f 1)
Per cercare e allo stesso tempo rimuovere un file:

Codice: Seleziona tutto

find $mountpoint -type f -name "$filename" -exec rm -f {} \;
Soulcyber
Prode Principiante
Messaggi: 23
Iscrizione: lunedì 11 giugno 2012, 20:48

Re: [BASH] lista di file di una partizione

Messaggio da Soulcyber »

grazie mille bingel per la risposta

si è vero sto andando un po' a tentoni essendo un novellino del linguaggio, mi rimangono difficili soprattutto le opzioni da dare ad ogni singolo comando, anche leggendo il man non sempre riesco a capire cosa significhino di preciso

Non so perchè però se uso questo

Codice: Seleziona tutto

partizione=$(sudo fdisk -s /dev/sd*[0-9] | sort -gk2 | tail -n 1)
al posto di questo, ovvero tagliando il numero dei blocchi della partizione

Codice: Seleziona tutto

partizione=$(sudo fdisk -s /dev/sd*[0-9] | sort -gk2 | tail -n 1 | cut -d ":" -f 1 )
la ricerca mi da molti più risultati con tutti file con permesso negato

inoltre siccome devo scrivere pure la pencentuale di spazio occupato dalla partizione e il punto di mount,
per la percentuale pensavo di usare questo percento=(`df $partizione | sed 1d | awk '{print $5}'`)
(tuttavia se gli passo una partizione di swap lui non mi da la percentuale di quanto è grande)

mentre per il punto di mount, se uso il tuo comando mountpoint=$(grep "$partizione" /etc/mtab | cut -d " " -f 2 )
non riesco a stampare il punto di mount cioè /home/, eppure se il find lo prende perchè non riesco a vederlo?

A questo punto ti riposto tutto il codice come l'ho fatto ora sperando possa chiarirti le idee, te l'ho commentato nei punti in cui mi sono bloccato

Codice: Seleziona tutto

#!/bin/bash

partizione=$(sudo fdisk -s /dev/sd*[0-9] | sort -gk2 | tail -n 1)
mountpoint=$(grep "$partizione" /etc/mtab | cut -d " " -f 2 ) 
#devo stampare il punto di mount ma non funziona
percento=(`df $partizione | sed 1d | awk '{print $5}'`)
#devo stampare la percentuale di spazio occupato dalla partizione
#ma funziona solo se a partizione in alto aggiungo cut -d ":" -f 1
		echo
      echo "La partizione sd[x][n] più grande è : $partizione blocchi "
      echo "$mountpoint"
  		echo "$percento"
		echo ""
function menu {

select menusel in "Visualizza la lista dei file della partizione inserendo m in bytes" "Cancella un file" "Esci"; 
do
	case $menusel in
		"Visualizza la lista dei file della partizione inserendo m in bytes")
			echo "Inserisci m, visualizza solo i file > di m nella partizione: " 
			read dimensione
			echo "Di seguito i file appartenenti all'utente di dimensione superiore a $dimensione bytes:"
			find $(grep "$partizione" /etc/mtab | cut -d " " -f 2) -size +$dimensione\c -uid $(id -u)
		;;
	
		"Cancella un file")
			echo "Inserisci il nome del file che vuoi cancellare" 
			read filename
			find $mountpoint -type f -name "$filename" -exec rm -f {} \;
			#devo mettere un if, se trova il file e lo elimina devi avvisarmi
			#se non lo trova mi dice che non l'ha trovato
			echo "la lista aggiornata è la seguente : "
			find $(grep "$partizione" /etc/mtab | cut -d " " -f 2) -size +$dimensione\c -uid $(id -u)
		;;
		"Esci")
			echo "Chiusura Script"
			exit 0 
		;;
	
	esac

	break

done
}

while true; 
do 
	menu; 
done
grazie per la pazienza :cry:
Avatar utente
bingel
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4026
Iscrizione: lunedì 3 aprile 2006, 10:17

Re: [BASH] lista di file di una partizione

Messaggio da bingel »

...inoltre siccome devo scrivere pure la pencentuale di spazio occupato dalla partizione e il punto di mount,
per la percentuale pensavo di usare questo percento=(`df $partizione | sed 1d | awk '{print $5}'`)
(tuttavia se gli passo una partizione di swap lui non mi da la percentuale di quanto è grande)
Senti, ma sei sicuro che è la dimensione della partizione ciò che ti richiede il problema e non piuttosto lo spazio della partizione che risuolta occupato da files?
Perché a naso direi che avrebbe più senso la seconda cosa ovvero cercare la partizione "più piena" e all'interno di questa trovare i file più grandi al fine di poterli eliminare svuotandola un po' e riacquistando dello spazio libero.

Lo spazio occupato lo trovi tramite il seguente comando:

Codice: Seleziona tutto

df
oppure (se preferisci le dimensioni espresse in un formato più leggibile):

Codice: Seleziona tutto

df -h

Venendo alla tua domanda:

i comandi che ti ho passato dovrebbero funzionare (li avevo testati sul mio pc) pertanto ciò che devi fare è provare a testarli pure tu sul tuo. Prova ad eseguirli da terminale nell'ordine seguente (e fai copia/incolla per non sbagliare):

Codice: Seleziona tutto

partizione=$(sudo fdisk -s /dev/sd*[0-9] | sort -gk2 | tail -n 1 | cut -d ":" -f 1)
echo $partizione
dimensione_partizione=$(sudo fdisk -s /dev/sd*[0-9] | sort -gk2 | tail -n 1 | cut -d ":" -f 2)
echo $dimensione_partizione
mountpoint=$(grep "$partizione" /etc/mtab | cut -d " " -f 2)
echo $mountpoint
Infine puoi usare i seguenti parametri di "find" (-type f) per fare in modo che l'output siano solo files e non anche directory (in modo che non ti dia errori):

Codice: Seleziona tutto

sudo find $mountpoint -type f -size +$dimensione\c -uid $(id -u)
Se accanto al nome del file vuoi anche la relativa dimensione:

Codice: Seleziona tutto

sudo find $mountpoint -type f -size +$dimensione\c -uid $(id -u) -exec du -h {} \;
Ultima modifica di bingel il mercoledì 13 giugno 2012, 12:31, modificato 1 volta in totale.
Avatar utente
bingel
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4026
Iscrizione: lunedì 3 aprile 2006, 10:17

Re: [BASH] lista di file di una partizione

Messaggio da bingel »

Attenzione al precedente post: l'ho modificato più volte pertanto rileggitelo (nel caso avessi perso qualche modifica).
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 10 ospiti