linux + найти + удалить файлы на удаленных машинах, кроме определенных файлов [дубликаты]

Similar a la respuesta de oliv, quizás un poco más simple:

gawk -v RS='=+\n' '
    NR % 2 == 0 {header = $0; next}
    /[^[:space:]]/ {printf "%s", RT header RT $0}
    END {print RT}
' output.txt 

Usando una línea de =s como separador de registro. El encabezado es entonces cada registro con número par. Y el "contenido" no está vacío si contiene un carácter de espacio en blanco que no sea -.

RTes una variable específica de GNU awk que contiene "El texto de entrada que coincidió con el texto indicado por RS, el separador de registros. Se establece cada vez que se lee un registro".

-1
07.07.2019, 15:28
2 ответа

этот интерфейс командной строки удалит все файлы в каталоге /etc/yum.repos.d, исключит файлы, а также распечатает удаленные файлы

ssh "root@$IP" "find  /etc/yum.repos.d ! -name local.repo ! -name redhat.repo ! -name cluster.repo    -type f -delete -print"
0
28.01.2020, 05:07
ssh "root@$machine" '
   find /etc/yum.repos.d -type f ! \(
     -name local.repo -o \
     -name redhat.repo -o \
     -name cluster.repo \) –delete
'

(предполагается, что оболочка входа пользователя root на $machine— это Bourne -, например ).

Помните, что вы передаете в sshне аргументы команды для запуска на удаленном хосте, а строку, которая интерпретируется как код оболочки оболочкой входа удаленного пользователя. Поэтому проще всего поместить эту строку в одинарные кавычки, чтобы локальная оболочка не мешала ей.

3
28.01.2020, 05:07

Теги

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