
partizione=$(sudo fdisk -s /dev/sd*[0-9] | sort -gk2 | tail -n 1)
dimensione_partizione=$(sudo fdisk -s /dev/sd*[0-9] | sort -gk2 | tail -n 1 | cut -d ":" -f 1 )
mountpoint=$(grep "$partizione" /etc/mtab | cut -d " " -f 2 )
#devo stampare il punto di mount ma non funziona
percento=(`df $dimensione_partizione | sed 1d | awk '{print $5}'`)
echo
echo "La partizione sd[x][n] più grande è : $partizione "
echo "$mountpoint"
echo "e occupa il $percento della partizione primaria "
echo
mountdimensione_partizione=$(sudo fdisk -s /dev/sd*[0-9] | sort -gk2 | tail -n 1 | cut -d ":" -f 2 ) #attenzione a mettere 2 al posto di 1 in fondo al comandomountpoint=$(grep $partizione /etc/mtab | cut -d " " -f 2)

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/dev/sda1
7863296
/
/dev/sda1 on / type ext4 (rw,errors=remount-ro,commit=0)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
Condivisa on /media/sf_Condivisa type vboxsf (rw,gid=124)
gvfs-fuse-daemon on /home/pagio/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=pagio)
/dev/sr0 on /media/VBOXADDITIONS_4.1.8_75467 type iso9660 (ro,nosuid,nodev,uid=1000,gid=1000,iocharset=utf8,mode=0400,dmode=0500,uhelper=udisks)
Condivisa on /home/pagio/Scrivania/condivisa type vboxsf (rw)
inizio a pensare che l'output che mi da mountpoint cioè una slash sia corretto (vedendo l'output di mount), ma non capisco perchè è così
dimensione_partizione=$(sudo fdisk -s /dev/sd*[0-9] | sort -gk2 | tail -n 1 | cut -d ":" -f 2 ) #attenzione a mettere 2 al posto di 1 in fondo al comando
#!/bin/bash
partizione=$(sudo fdisk -s /dev/sd*[0-9] | sort -gk2 | tail -n 1 | cut -d ":" -f 1)
dimensione_partizione=$(sudo fdisk -s /dev/sd*[0-9] | sort -gk2 | tail -n 1 | cut -d ":" -f 2)
mountpoint=$(grep "$partizione" /etc/mtab | cut -d " " -f 2)
percento=(`df $partizione | sed 1d | awk '{print $5}'`)
echo
echo "La partizione sd[x][n] più grande è : $partizione "
echo "la partizione è montata in : $mountpoint"
echo "e occupa il $percento della partizione primaria "
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:"
#sudo find $mountpoint -type f -size +$dimensione\c -uid $(id -u)
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 : "
#sudo find $mountpoint -type f -size +$dimensione\c -uid $(id -u)
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
Soulcyber ha scritto:...tuttavia ora che va quasi tutto, il find mi dai dei problemi, cioè vedo troppa roba con permessi negati e quando provo a rimuovere mi dice che non ho i permessi (quindi non dovrei vederlo), ma avendo messo -f lo forzo e lo toglie uguale

, sto cancellando solo file che trovo nella cartella Scaricati, quindi non dovrei aver distrutto niente per ora

#!/bin/bash
device=$(df -P | grep '^/dev/sd' | sort -gk5 | tail -n 1 | awk '{print $1}')
usedspace=$(df -P | grep '^/dev/sd' | sort -gk5 | tail -n 1 | awk '{print $5}')
mountpoint=$(df -P | grep '^/dev/sd' | sort -gk5 | tail -n 1 | awk '{print $6}')
echo
echo "La partizione con più spazio usato è: $device"
echo "La directory in cui tale partizione è montata è: $mountpoint"
echo "La percentuale di spazio usato di tale partizione è pari al $usedspace"
echo
echo "Inserire la dimensione minima, in MB, dei files da elencare contenuti"
echo "all'interno della partizione di cui sopra o digitare 'q' per uscire: "
### Al posto dell'IF all'interno del seguente ciclo WHILE sarebbe forse meglio usare un CASE
while read m; do
if [[ $m = [Qq] ]]; then
exit 0
else
if [[ $m =~ ^[0-9]+$ ]]; then
break
else
echo "Scelta non valida. Inserire un valore intero o digitare 'q' per uscire:"
fi
fi
done
echo
echo "Attendere, creazione della lista dei files in corso..."
PS3=$(echo; echo "Inserire il numero corrispondente al file da eliminare o premere 'q' per uscire: ")
while true; do
list=$(find $mountpoint -type f -size +$m\M -uid $(id -u) 2>/dev/null)
if [ -n "$list" ]; then
OIFS=$IFS
IFS=$'\n'
select file in $list; do
if [ -n "$file" ]; then
rm -f ${file}
echo
echo "Il file:"
echo ${file}
echo "è stato eliminato."
echo
echo "Attendere, aggiornamento lista in corso..."
break
else
if [[ $REPLY != [Qq] ]]; then
echo -n "File non trovato o scelta errata. "
else
exit 0
fi
fi
done
IFS=$OIFS
else
echo "Nessun file supera la dimensione impostata. Lista non generata. Esco"
exit 0
fi
done


device=$(df -P | grep "^/dev/sd*" | sort -gk5 | tail -n 1 | awk '{print $1}')
usedspace=$(df -P | grep "^/dev/sd*" | sort -gk5 | tail -n 1 | awk '{print $5}')
mountpoint=$(df -P | grep "^/dev/sd*" | sort -gk5 | tail -n 1 | awk '{print $6}')

La partizione con più spazio usato è: /dev/sda1
La directory in cui tale partizione è montata è: /media/VBOXADDITIONS_4.1.8_75467
La percentuale di spazio usato di tale partizione è pari al 45%
Inserire la dimensione minima, in MB, dei files da elencare contenuti
all'interno della partizione di cui sopra o digitare 'q' per uscire:
1
Attendere, creazione della lista dei files in corso...
1) /media/VBOXADDITIONS_4.1.8_75467/32Bit/OS2/libc063.dll
2) /media/VBOXADDITIONS_4.1.8_75467/VBoxLinuxAdditions.run
3) /media/VBOXADDITIONS_4.1.8_75467/VBoxSolarisAdditions.pkg
4) /media/VBOXADDITIONS_4.1.8_75467/VBoxWindowsAdditions-amd64.exe
5) /media/VBOXADDITIONS_4.1.8_75467/VBoxWindowsAdditions-x86.exe

device=$(df -P | grep "^/dev/sd*" | sort -gk5 | tail -n 1 | awk '{print $1}')device=$(df -P | grep "^/dev/sd" | sort -gk5 | tail -n 1 | awk '{print $1}')
, adesso funziona tutto alla perfezione, probabilmente cercherò di unire i 2 script, un po' di quello mio/tuo e un po' del solo-tuo e alla fine ti posto quello completo come l'ho fatto
Comunque sono proprio curioso di vedere cosa ne viene fuori perché lo script così com'è (il mio), già da solo assolve a tutte le richieste del problema ...almeno mi pare.

list=$(find $mountpoint -type f -size +$m\M -uid $(id -u) -exec du -h {} \; 2>/dev/null | awk '{print $1, $2}' | sort -hr)
e sono contento che tutto il tempo speso dietro la mia nabbaggine ti abbia almeno fruttato qualcosa
ho preferito tenere questa struttura per vari motivi:#!/bin/bash
partizione=$(df -P | grep "^/dev/sd" | sort -gk5 | tail -n 1 | awk '{print $1}')
usedspace=$(df -P | grep "^/dev/sd" | sort -gk5 | tail -n 1 | awk '{print $5}')
mountpoint=$(df -P | grep "^/dev/sd" | sort -gk5 | tail -n 1 | awk '{print $6}')
echo
echo "La partizione sd[x][n] più grande è : $partizione "
echo "la partizione è montata in : $mountpoint"
echo "e occupa il $usedspace della partizione primaria "
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:"
echo "#########################################################"
find $mountpoint -type f -size +$dimensione -uid $(id -u) 2>/dev/null
;;
"Cancella un file")
echo "Inserisci il nome del file che vuoi cancellare"
read filename
find $mountpoint -type f -name "$filename" -exec rm -f {} 2>/dev/null \;
#if [ file trovato e eliminato]; then
#echo "il file "$filename" è stato eliminato"
#else
#echo "il file "$filename" non è stato trovato"
#fi
echo "#########################################################"
echo "la lista aggiornata è la seguente : "
find $mountpoint -type f -size +$dimensione -uid $(id -u) 2>/dev/null
;;
"Esci")
echo "Chiusura Script"
exit 0
;;
esac
break
done
}
while true;
do
menu;
doneVisualizzano questa sezione: melfnt e 2 ospiti