giovedì 31 gennaio 2013

Troppi file con poche risorse

Qualche giorno fa ero collegato ad un server povero di risorse (povero è un eufemismo) ed avevo necessità di spostare circa 106 file da una directory. Quando si tratta di un numero elevato di file un semplice "mv *" non si può fare poiché "*" non è espanso (tipicamente Argument list too long). Non era possibile spostare l'intera directory per un vincolo che non descrivo poiché mi porterebbe fuori tema.
Ho salvato la sessione di comandi, potrebbe essere istruttiva

# ls -l | wc -l
ls: memory exhausted

# find ./ -type f -exec mv {} ../../../da_cancellare/.n_returned/ \;
find: cannot fork: Cannot allocate memory

# for i in `ls`;do mv $i ../../../da_cancellare/.n_returned/${i}; done
-bash: fork: Cannot allocate memory

# /bin/ls | tr '\n' '\0' | xargs -0 -i% mv % ../../../da_cancellare/.n_returned/