linemod50(){
dd bs=51 skip="$(($1/50))" count=1 | {
dd bs=1 count="$(($1%50-!!($1%50)))"
IFS= read -r rem
printf "*%s\n" "$rem"
} 2 >/dev/null
}
i= forty9=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW
while [ "$((i+=1))" -le 50 ]
do echo "$((i%10))$forty9"
done >file
linemod50 478 <file
1+0 records in
1+0 records out
51 bytes (51 B) copied, 9.5153e-05 s, 536 kB/s
0abcdefghijklmnopqrstuvwxyz*ABCDEFGHIJKLMNOPQRSTUVW
Это, вероятно, наиболее эффективное решение, потому что dd
будет просто искать прямо к вашему смещению. Однако он не работает с широкими символами и может привести к неожиданным результатам при вводе по конвейеру.
Это отличное решение с возможностью поиска ввода в локали C.
deman find
:
-name pattern
Base of file name (the path with the leading directories removed) matches
shell pattern pattern.
El primer formato(-name "*x86_64-linux-gnu*"
)solo coincide con los archivos cuyo nombre coincide con pattern
. Si están en un directorio cuyo nombre coincide con el patrón, no coincidirán. Sin embargo, el último formato(-name "*"
congrep
)coincide con estos.
Si está buscando todos los archivos cuyas rutas contienen x86-64-linux-gnu
, necesita usar -path
, no-name
:
find /usr -path "*x86_64-linux-gnu*" | wc -l
-name
solo coincide con el nombre del archivo base, mientras que -path
coincide con la ruta completa (construida por find
, por lo que comienza con una de las rutas iniciales proporcionadas en la línea de comando ). Mirar la salida de su primer comando ilustrará esto:
find /usr -name "*x86_64-linux-gnu*" | less
Verá archivos y directorios que coinciden con x86_64-linux-gnu
, como /usr/include/x86_64-linux-gnu
, /usr/lib/ccache/x86_64-linux-gnu-g++
, /usr/lib/python3.5/lib-dynload/_bz2.cpython-35m-x86_64-linux-gnu.so
, pero no /usr/include/x86_64-linux-gnu/curl
con el que coinciden su variante grep
o la variante -path
anterior.
Estas dos expresiones y su uso apropiado se analizan en detalle en la página de manual de find(1)
(como siempre, mire primero man find
en su propio sistema ).