【发布时间】:2021-05-01 17:21:30
【问题描述】:
这可能是一个非常具体的案例,但我对 bash 知之甚少,我需要删除“重复”文件。这几天我一直在下载完全合法的电子游戏 rom,我注意到很多包都有同一个游戏的许多不同版本,就像这样:
Awesome Golf (1991).lnx
Awesome Golf (1991) [b1].lnx
Baseball Heroes (1991).lnx
Baseball Heroes (1991) [b1].lnx
Basketbrawl (1992).lnx
Basketbrawl (1992) [a1].lnx
Basketbrawl (1992) [b1].lnx
Batman Returns (1992).lnx
Batman Returns (1992) [b1].lnx
如何制作删除重复项的 bash 脚本?副本将是具有相同名称的任何文件,并且名称将是第一个括号之前的字符串。该脚本应该解析所有文件并获取它们的名称,查看哪些名称匹配以检测重复项,并删除除第一个文件之外的所有文件(第一个是按字母顺序出现的第一个文件)。
【问题讨论】:
-
哪些是重复的?那些有
[a1]、[b1]等的人? -
同名者。想法是将具有相同名称的所有内容(即括号之前的所有内容)视为重复,并删除除第一个之外的所有内容。
-
用这些额外的细节更新问题(不是每个人都会通读 cmets 试图拼凑整个画面);也...对于给定的示例输入...更新问题 a) 你到目前为止尝试过的内容,b) 你的代码生成的(错误的)结果和 c) (正确的)期望输出;另一件事,用实际文件名的文本/代码块替换图像......我们可以(轻松地)剪切粘贴到测试用例中(即,我们对花时间将图像转换为文本不感兴趣)
-
您最好先获取所有文件的 MD5 摘要(校验和),然后查找重复项(通过
sort和uniq -d进行管道传输),然后删除名称最长的重复项。 -
学会使用git下次会很有用
标签: bash automation scripting