Думаю, это невозможно. Я думал, что Kali Linux 2.0 действительно хорош, но после этого я думаю, что это большой провал. Переход с wlan0 на wlan0mon - убийца. Почему? Многие скрипты будут работать в Kali на всех версиях, кроме 2.0, потому что wlan0mon. Это действительно печально, и если мы не сможем сделать больше режима мониторов, я думаю, что оставлю этот дистрибутив на некоторое время.
РЕДАКТИРОВАТЬ: Кто-то сказал, что ядро 2.6.31 или выше использует виртуальный уровень или что-то в этом роде. Попробуйте воспользоваться помощью команды "iw", и вы увидите, что можно добавить новый режим мониторов:)
El problema aquí es que está tratando de analizar la salida de ls
. Esto es siempre una mala idea. Consulte ¿Por qué *no *analiza `ls `? para una explicación de por qué es así.
Si desea el tamaño de un archivo, utilice stat
. p.ej.
minsize=$(( 800 * 1024 * 1024 ))
# alternatively, if you have `numfmt` from GNU coreutils, delete the line above
# and uncomment the following line:
#minsize=$(echo 800M | numfmt --from=iec)
while read -r line3 ; do
if [ "$(stat -L --printf '%s' "$line3")" -gt "$minsize" ]; then
echo "$line3" >> xyz/size_list.txt
fi
done < xyz/symlinks_paths.txt
Nota :He usado stat
's-L
(aka--dereference
)opción anterior porque el nombre de archivo de entrada implica que los nombres de archivo enumerados en él pueden ser enlaces simbólicos. Sin -L
, stat
no seguirá un enlace simbólico, imprimiría el tamaño del enlace simbólico.
Si desea que el tamaño del archivo se imprima en el archivo de salida junto con el nombre del archivo, entonces el bucle while
sería más parecido al siguiente:
while read -r line3 ; do
fsize=$(stat -L --printf '%s' "$line3")
if [ "$fsize" -gt "$minsize" ]; then
fsize=$(echo "$fsize" | numfmt --to=iec)
printf "%s\t%s\n" "$fsize" "$line3" >> xyz/size_list.txt
fi
done < xyz/symlinks_paths.txt
Esto se puede hacer confind
(y xargs
), pero no ganará ningún concurso de belleza.
Escriba un script llamadocheck_files
:
#!/bin/sh
find "$@" -size +800M –print
Luego ejecute
xargs -d '\n' < xyz/symlinks_paths.txt./check_files
donde
< xyz/symlinks_paths.txt
redirección hasta el final de la línea de comando, como en xargs -d '\n'./check_files < xyz/symlinks_paths.txt
, o al principio, o en cualquier otro lugar. O puede reemplazarlo con -a xyz/symlinks_paths.txt
. Cualquiera de estos significa que xargs
leerá de xyz/symlinks_paths.txt
. ./check_files
con un nombre de ruta absoluto a su script check_files
. -d '\n'
significa usar nueva línea como delimitador al leer xyz/symlinks_paths.txt
. Probablemente puedas dejar esto fuera si sus nombres de archivo no contienen espacios en blanco (espacio (s )o tabulador (s )), comillas (recuerda que una comilla simple('
)es el mismo carácter que un apóstrofo )o barras invertidas, y estás dispuesto a apostar el salario de un año a que nunca lo harán.
Esto lee cada línea del archivo y lo convierte en un argumento para el script check_files
, que los pasa afind
como punto de partida -argumentos . Mucha gente sabe que puedes correr find
con múltiples argumentos que comienzan -punto ; por ejemplo,
find dir1 dir2 dir3 search-expression
No es tan conocido que esos argumentos no tienen por qué ser directorios; pueden ser archivos; por ejemplo,
find file1 file2 file3 search-expression
(o una combinación de directorios y archivos ). find
simplemente aplicará la expresión a cada archivo nombrado como un punto inicial -.
Esto comprueba cada archivo cuyo nombre aparece en xyz/symlinks_paths.txt
para ver si su tamaño es de 800M o más, e imprime los que lo son.
Si los nombres de archivo pueden hacer referencia a enlaces simbólicos (como sugiere el nombre xyz/symlinks_paths.txt
)y quieres mirar el apuntado -a los archivos (que seguramente haces ), cambie find
a find -L
.
No necesita tener un script check_files
separado; puedes hacer
xargs -d '\n' < paths.txt sh -c 'find "$@" -size +800c -print' sh
Nuevamente, cambie find
a find -L
si lo desea.