From 9b5d54947de9cfaeb4751c9de04be1b1a36952bd Mon Sep 17 00:00:00 2001 From: agust Date: Sat, 27 Feb 2021 22:24:23 -0300 Subject: [PATCH] Add duplicates script --- duplicates/duplicates.nu | 22 ++++++++++++++++++++++ duplicates/example.nu | 13 +++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 duplicates/duplicates.nu create mode 100644 duplicates/example.nu diff --git a/duplicates/duplicates.nu b/duplicates/duplicates.nu new file mode 100644 index 0000000..77b8dae --- /dev/null +++ b/duplicates/duplicates.nu @@ -0,0 +1,22 @@ +# duplicates returns the rows that correspond to duplicates of the given column. +def duplicates [ +column: string # Column to look duplicates at +--count(-c) # set it to display the number of times the value is repeated. +] { + group-by $column | + pivot | + insert count { = $it.Column1 | flatten | count} | + where count > 1 | + reject Column0 | + if $(= $count | empty?) {reject count} {each {=$it}} | + flatten | + flatten +} + +# duplicates files recursively finds duplicate files in the current working folder. +# It uses a heuristic based on duplicate files having the same size. +def "duplicates files" [] { + do -i {ls **/*} | duplicates size +} + + diff --git a/duplicates/example.nu b/duplicates/example.nu new file mode 100644 index 0000000..7f38a64 --- /dev/null +++ b/duplicates/example.nu @@ -0,0 +1,13 @@ +# duplicates example +echo $info | from json +let info = "[{name: "John", lastname: "Doe"}, {name: "John", lastname: "Roe"}, {name: "Jane", lastname: "Soe"}]" +echo $info | from json | duplicates name + +#duplicates files example +echo A | save A.txt +echo A | save B.txt +# note that if I used "echo B | save B.txt" the function will give a false positive +echo ABC | save C.txt +ls +duplicates files +rm A.txt B.txt C.txt --permanent \ No newline at end of file