find
sale con éxito ya sea que haya encontrado archivos o no. Su definición de éxito es que los parámetros de la línea de comando son válidos y no hubo errores de entrada/salida. Si desea saber si encontró algunos archivos, imprima algo y verifique si la salida no está -vacía.
Si desea que find
imprima el nombre de un archivo que encuentra, inserte -print
como una acción. Puede encadenar varias acciones (, p. -print
, -exec
y -prune
simplemente poniéndolos uno tras otro ).
find /path/to/files -type d -mtime +2 -name '[0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]' -print -exec rm -rf {} \; -prune
Tenga en cuenta que necesita comillas alrededor del patrón pasado a -name
. De lo contrario, si hay un archivo coincidente en el directorio actual, el shell expandirá ese patrón antes de que find
lo vea.
Si desea imprimir el nombre de cada archivo eliminado y no solo del directorio de nivel superior de cada copia de seguridad, y está en Linux (más precisamente, si está usando GNU coreutils ), puede pase el indicador -v
a rm
.
Tenga en cuenta que el comando que publicó busca directorios coincidentes en todas partes bajo /path/to/files
de forma recursiva, no solo en el nivel superior. No estoy seguro de si eso es lo que pretendías; por ejemplo, buscaría dentro de las copias de seguridad recientes. Si solo desea hacer coincidir los directorios de nivel superior, la forma más fácil es pasar -maxdepth 1
, y luego no necesita -prune
.
find /path/to/files -maxdepth 1 -type d -mtime +2 -name '[0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]' -print -exec rm -rf {} \;
Alternativamente, puede dejar que el shell coincida con los nombres de los directorios y decirle a find
que nunca recurra a nada aplicando -prune
antes de la coincidencia.
find /path/to/files/[0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9] -prune -type d -mtime +2 -print -exec rm -rf {} \;
Pero esto generará un error si no hay archivos que coincidan con el patrón, o si hay tantos archivos coincidentes que sus nombres combinados sobrepasan la longitud máxima de una línea de comando. El enfoque -maxdepth
no tiene estos defectos.
Si desea registrar qué archivos se eliminaron, redirija la salida a un archivo.
{
echo "# Deletions on $(date)"
find /path/to/files -type d -mtime +2 -name '[0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]' -print -exec rm -rf {} \; -prune
echo
} >>backup-deletions.log
Si le preocupa eliminar algo incorrecto,registrar lo que eliminó solo le informará una vez que sea demasiado tarde. Puede hacer una eliminación por etapas moviendo primero las cosas a una "papelera" y vaciando la papelera más tarde.
# Move things to trash. Use whatever criteria you want.
find /path/to/files -type d -mtime +2 -name '[0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]' -exec mv {} /path/to/trash \; -prune
# Delete directories from the trash can if they were moved more than
# a week ago.
find /path/to/trash -mindepth 1 -maxdepth 1 -ctime +7 -exec rm -rf {} \;
Первый шаг — определить, какие параметры конфигурации необходимо установить для построения модуля. Я использую
make menuconfig
для этого; /
, за которым следует нужный параметр конфигурации, подскажет, где его найти и каковы его зависимости. Для ECHAINIV
вам нужно включить CRYPTO
, а затем включитьECHAINIV
(как модуль, поскольку это то, что вам нужно — в make menuconfig
запись должна показывать <M>
, а не <*>
).
Чтобы собрать модуль, найдите каталог, содержащий соответствующий исходный код:
find. -name echainiv\*
Код находится в crypto
, поэтому
make crypto/echainiv.ko
(из каталога верхнего уровня -)создаст для вас модуль.
Чтобы установить модуль, предполагая, что вы используете целевое ядро, запустите
sudo mkdir -p /lib/modules/$(uname -r)/kernel/crypto
sudo cp -i crypto/echainiv.ko /lib/modules/$(uname -r)/kernel/crypto