Разница между локальным и удаленным каталогами

Попробуйте это с GNU sed:

sed -n '/^<tr>/p' file

или

sed '/^<tr>/!d' file
3
22.02.2018, 21:41
2 ответа

Puede canalizar su comando en el siguiente script awk.

$ rsync -avcn local/ remote/ | awk 'BEGIN {prev="./"} substr($0, 0, (length(prev))) != prev {print $0; prev = $0}'
file1
aaa/
bbb/

Explicación

  • {prev="./"}:antes de comenzar a leer la entrada, establezca la variable preven ./(, que es la primera línea de la salida ). A partir de aquí, usaremos esta variable para almacenar el contenido de la línea anterior.
  • substr($0, 0, (length(prev))):extrae un substring de toda la línea $0, comenzando en el primer carácter 0, y con una longitud tan larga como la línea anterior (length(prev)).
  • != prev:compara la subcadena de la línea actual con la línea anterior. Esencialmente, esto prueba si la línea actual (, la subcadena )comienza con la cadena de la línea anterior. No usamos una expresión regular simple aquí (anclada al comienzo de la línea ), porque tendríamos que escapar de ella.
  • {print $0; prev = $0}:si la línea actual comienza con la línea anterior, ignórela (, es decir, no la imprima ), si no coincide , entonces es un directorio nuevo, así que imprima toda la línea print $0y almacene la nueva línea en la variable prevprev = $0.
1
27.01.2020, 21:30

Su mejor apuesta, creo, es usar find <dir> -maxdepth 1 -type dcontra los 2 directorios, luego compare los resultados ordenados. De manera similar a la solución de Paul T pero con un límite de profundidad y teniendo en cuenta solo los directorios:

$ cd <local_folder>; find. -type d -maxdepth 1 | sort > ~/local-list.txt
$ cd <remote_folder>; find. -type d -maxdepth 1 | sort > ~/remote-list.txt
$ diff -u ~/remote-list.txt ~/local-list.txt
0
27.01.2020, 21:30

Теги

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