Shell

如何使用 rmlint 僅從一個位置刪除重複項並保持其他所有內容不變?

  • November 19, 2021

我有兩個位置/path/to/a/path/to/b. 我需要在兩個路徑中找到重複的文件並只刪除項目中的/path/to/b項目。 rmlint生成相當大的刪除腳本,但它包含來自兩個路徑(甚至是空文件夾)的條目以進行刪除。

rmlint使用以下參數執行以獲得此結果,我認為該結果只會/path/to/a被選中刪除:

rmlint -g -e -S p /path/to/a /path/to/b

根據文件,標記是您所需要的。

要使用標記,您可以使用//. // 分隔符之後的每條路徑都被認為是“標記的”,並將在可能的情況下被視為原始路徑

例如,rmlint a // b將“a”路徑標記為重複,將“b”標記為原始路徑

為了永不刪除任何標記的文件,有-k( --keep-all-tagged) 選項。另一種選擇是-m( --must-match-tagged),它只查找標記路徑中存在原件的重複項。

一個簡單的範例(取自文件)是:您有一個攜帶式備份驅動器,上面有一些舊備份。您剛剛將主文件夾備份到新的備份驅動器。您想重新格式化舊的備份驅動器並將其用於其他用途。但首先您要檢查舊驅動器上是否沒有其他地方沒有的東西。舊驅動器安裝在/media/portable.

$ rmlint --keep-all-tagged --must-match-tagged /media/portable // ~

希望能幫助到你!

引用自:https://unix.stackexchange.com/questions/639251