Параметры команды find

Как говорит Мё, использование псевдо-терминала может быть принудительно с помощью опции -t, и тогда появится логин с кем. Однако, хотя это домашняя система, если бы это не было так, меня бы немного беспокоило, что если бы кто-то вошел в систему без использования этого переключателя, я мог бы не знать о его присутствии в моей системе, не рассматривая далее опции sshd's reporting options!

1
25.02.2018, 15:53
1 ответ

-print se asegurará de que el nombre de la ruta actual se imprima en la salida estándar. Algunas banderas desactivan la impresión predeterminada de nombres de ruta (-exec, por ejemplo ).

-depthprovocará un primer recorrido profundo -de la jerarquía de archivos, de modo que los nombres de ruta en directorios sin subdirectorios se manejen primero (de abajo hacia arriba en lugar de arriba hacia abajo ). En su ejemplo, hace poca diferencia ya que está trabajando en un directorio sin subdirectorios, pero observe que .se informa después de los otros nombres de ruta cuando usa-depth(esto es porque .es la parte superior -la mayoría de los directorios que se buscarán, por lo que su nombre de ruta se maneja en último lugar con -depthy primero sin-depth).

Es útil usar -depthsi uno está eliminando directorios con findya que obtendría errores al intentar acceder a directorios ya eliminados sin él.

Como Scott señala en los comentarios a continuación, definitivamente necesitaría -depthcuando también cambiara el nombre de directorios, o posiblemente no podría atravesar la estructura de directorios al mismo tiempo. tiempo mientras cambia el nombre de los directorios en él.

La bandera -deleteactiva -depthde forma predeterminada.


Ejemplo :Elimine todos los directorios debajo del directorio actual cuyos nombres coincidan con *deleteme(, por ejemplo folder-deleteme), y también imprima las rutas a los directorios eliminados con éxito:

find. -depth -type d -name '*deleteme' -exec rm -rf {} ';' -print

Dada la siguiente estructura de directorios,

$ tree
.
`-- folder-deleteme
    `-- another-deleteme
        `-- evenmore-deleteme

3 directories, 0 file

ejecutar el comando anterior findsin-depthdaría como resultado

$ find. -type d -name '*deleteme' -exec rm -rf {} ';' -print
./folder-deleteme
find:./folder-deleteme: No such file or directory

porque findelimina el directorio superior -más folder-deleteme(e imprime su ruta )y luego intenta ingresar para buscar más directorios para eliminar.

También:

$ find.
.
./folder-deleteme
./folder-deleteme/another-deleteme
./folder-deleteme/another-deleteme/evenmore-deleteme

$ find. -depth
./folder-deleteme/another-deleteme/evenmore-deleteme
./folder-deleteme/another-deleteme
./folder-deleteme
.
11
27.01.2020, 23:11

Теги

Похожие вопросы