Tengo un script de shell que se usa find -print0
para guardar una lista de archivos para procesar en un archivo temporal. Como parte del registro, me gustaría generar el número de archivos encontrados, por lo que necesito una forma de obtener ese recuento. Si la -print0
opción no se usara por seguridad, podría usar wc -l
para obtener el recuento.
shell-script
qqx
fuente
fuente
head
ytail
en entradas delimitadas por nulos en bash?Respuestas:
Algunas opciones:
Tenga en cuenta que para una entrada que contiene datos después del último carácter NUL (o entrada no vacía sin caracteres NUL), los
tr
enfoques siempre contarán el número de caracteres NUL, pero los enfoquesawk
/sed
/grep
contarán un registro adicional para esos bytes adicionales .fuente
head -c 5G /dev/urandom > f
). Resultados: grep 1.7s (lo mismo paragrep -Fcz ''
) • tr + wc-c 7.7s • tr + wc-l 7.4s • sed 34.7s • awk 1m11.7sawk
, querrá establecer la configuración regional enC
(o cualquiera que no use caracteres multibyte),LC_ALL=C awk ... < f
LC_ALL=C
ensort
donde no acelerar las cosas, por lo tanto Afortunadamente todavía tengo tener el archivo de delante:LC_ALL=C awk ...
toma 6.7s.El mejor método en el que he podido pensar es usar
grep -zc '.*'
. Esto funciona, pero se siente mal usar grep con un patrón que coincida con cualquier cosa.fuente
Con
perl
:o:
o:
fuente
wc -l
) como una nota (como puede ser que se quiera).