[Risolto][SHELL]copia, spostamento, eliminazione in base alla dimensione file

Stato
Discussione chiusa ad ulteriori risposte.

Ico Bellungi

Utente Èlite
2,920
626
Qualcuno sa se su Linux esiste un comando, o un argomento per i comandi classici, per spostare, copiare, eliminare files in base alla loro dimensione?
Mi spiego: ho una directory con 6ooo e rotti files, e vorrei cancellare (ma anche spostare o copiare... l'importante per ora è separarli) i files più piccoli di 40 kb, che sono circa un 1/3.
Ho guardato le manpages di cp,rm,mv ma non ho trovato nulla, nemmeno su zio Google ho trovato niente.
Mi sto arrovellando da mezz'ora...
Grazie in anticipo
:muro:
 
Ultima modifica:

airex

Utente Èlite
2,394
14
CPU
Intel Core2Duo E6750
Scheda Madre
Gigabyte GA-G33M-DS2R
HDD
1x80GB Sata2 + 1x320GB Sata2
RAM
2 x 2048MB DDR2 800MHz
GPU
NVidia 8800GT 1GB
Audio
Intel HDA
Monitor
LCD Samsung 19"
PSU
LC Power Green Power V2.0 - 550 Watt
OS
Linux Slackware64
prova con:

cd directory_in_questione
find ./ -size 40k -type f -exec cp {} /directory_per_file_piccoli/ \;
 

Ico Bellungi

Utente Èlite
2,920
626
hmmmm... ho provato con 20k invece che 40, e mi ha copiato solo i files tra 19 e 20kb, in tutto una ventina.
Sarebbe un'idiozia se facessi così sulla directory in questione?

find -size 20k | rm *

Magari, per provare, invece di un rm, farei mv o cp da qualche parte

Anche se solo find ./ -size 20k mi dà come output i files tra 20 e 19 kb

oppure... mi sa che ho trovato....

find ./ -size -20k -type f -exec mv {} /directory_per i files piccoli/ \;
 

airex

Utente Èlite
2,394
14
CPU
Intel Core2Duo E6750
Scheda Madre
Gigabyte GA-G33M-DS2R
HDD
1x80GB Sata2 + 1x320GB Sata2
RAM
2 x 2048MB DDR2 800MHz
GPU
NVidia 8800GT 1GB
Audio
Intel HDA
Monitor
LCD Samsung 19"
PSU
LC Power Green Power V2.0 - 550 Watt
OS
Linux Slackware64
find ./ -size -20k -type f -exec mv {} /directory_per i files piccoli/ \;

perfetta, mi sa che "man find" ha fatto il suo lavoro :)
 

Ico Bellungi

Utente Èlite
2,920
626
sì, ma senza il tuo comando non ci sarei MAI arrivato... alla fine ho solo aggiunto un - che ho trovato lla manpage di find...
anzi a dire il vero la sintassi del comando non mi è affatto chiara... mi sa che devo mettermi a studiare.
Grazzie mille airex, chiudete pure:ok:
 

airex

Utente Èlite
2,394
14
CPU
Intel Core2Duo E6750
Scheda Madre
Gigabyte GA-G33M-DS2R
HDD
1x80GB Sata2 + 1x320GB Sata2
RAM
2 x 2048MB DDR2 800MHz
GPU
NVidia 8800GT 1GB
Audio
Intel HDA
Monitor
LCD Samsung 19"
PSU
LC Power Green Power V2.0 - 550 Watt
OS
Linux Slackware64
prima di chiudere spieghiamo la sintassi :

find : comando

./: directory dalla quale iniziare a cercare

-size -20k: seleziona solo i file di dimensione inferiore (-) ai 20k

-type f: seleziona solo i file "regolari" (escludente quindi directory, symlink, devices,...)

-exec mv {} /directory_per i files piccoli/ \; : per ogni risultato trovato esegui il comando "mv ..." , nel caso di questo parametro del comando find la stringa {} indica il nome dell'elemento trovato e analizzato in quell'istante
 

AMD64

Utente Èlite
3,809
19
CPU
Intel Core 2 Duo T9400
HDD
300GB
RAM
4GB
GPU
Nvidia GeForce 9600 M GT
OS
Kubuntu 10.04 x86_64 - Windows 7 x64
Ottime info! :D Ora chiudo.
 
Stato
Discussione chiusa ad ulteriori risposte.

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!