Sto cercando un comando Unix per stampare i file con le sue dimensioni. L'ho usato ma non ha funzionato.Trova file con dimensioni in Unix
find . -size +10000k -print.
Desidero stampare la dimensione del file insieme al nomefile/alla directory.
Sto cercando un comando Unix per stampare i file con le sue dimensioni. L'ho usato ma non ha funzionato.Trova file con dimensioni in Unix
find . -size +10000k -print.
Desidero stampare la dimensione del file insieme al nomefile/alla directory.
find . -size +10000k -exec ls -sd {} +
Se la versione di find
non accetterà la +
notazione (che si comporta un po 'come xargs
fa), allora si potrebbe utilizzare (GNU find
e xargs
, così find
supporta probabilmente +
comunque):
find . -size +10000k -print0 | xargs -0 ls -sd
oppure è possibile sostituire +
con \;
(e vivere con la relativa inefficienza di questo), oppure si potrebbe vivere con problemi causati da spazi nei nomi e utilizzare il portatile:
find . -size +10000k -print | xargs ls -sd
La -d
sui comandi ls
assicura che se una directory è mai trovato (improbabile, ma ...), quindi le informazioni di directory verrà stampato, non i file nella directory. E, se stai cercando file più di 1 MB (come suggerito da un commento ormai cancellato), devi regolare lo +10000k
su 1000k
o forse +1024k
o +2048
(per blocchi da 512 byte, l'unità predefinita per -size
) . Questo elencherà la dimensione e quindi il nome del file. È possibile evitare la necessità di -d
aggiungendo -type f
al comando find
, naturalmente.
grazie. Ho usato la ricerca . -size + 300000k -print | xargs ls -sd 2>/dev/null –
Dando per scontato che avete GNU trovare:
find . -size +10000k -printf '%s %f\n'
Se si desidera una larghezza costante per il campo dimensioni, si può fare qualcosa di simile:
find . -size +10000k -printf '%10s %f\n'
Nota che -size +1000k
seleziona i file di almeno 10.240.000 byte (k
è 1024, non 1000). Hai detto in un commento che desideri file più grandi di 1M; se questo è 1024 * 1024 byte, allora questo:
find . -size +1M ...
farà il trucco - tranne che stampa anche la dimensione e il nome del file che sono esattamente 1024 * 1024 byte. Se ciò è importante, è possibile utilizzare:
find . -size +1048575c ...
È necessario decidere quale criterio si desidera.
Avresti bisogno di un 'c' dopo' + 1048575' per ottenere byte (caratteri) invece del valore predefinito di blocchi da 512 byte. –
@JonathanLeffler: corretto, grazie! –
Trova può essere utilizzato per stampare la dimensione del file in byte con% s come printf. % h /% f stampa rispettivamente il prefisso e il nome file della directory. \ n forza una nuova riga.
Esempio
find . -size +10000k -printf "%h/%f,%s\n"
uscita
./DOTT/extract/DOTT/TENTACLE.001,11358470
./DOTT/Day Of The Tentacle.nrg,297308316
./DOTT/foo.iso,297001116
Interessante. Questo dovrebbe essere documentato come estensione GNU (presumo) allo standard POSIX ['find'] (http://pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html). –
quel comando mi da 'find: sconosciuto predicato '-print.'' presumo il' .' non è davvero lì. La precisione è importante. –
Stack Overflow è un sito per domande di programmazione e sviluppo. Questa domanda sembra essere fuori tema perché non riguarda la programmazione o lo sviluppo. Vedi [Quali argomenti posso chiedere qui] (http://stackoverflow.com/help/on-topic) nel Centro assistenza. Forse [Super User] (http://superuser.com/) o [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/) sarebbe un posto migliore dove chiedere. Vedi anche [Dove posso pubblicare domande su Dev Ops?] (Http://meta.stackexchange.com/q/134306) – jww