我正在寻找通过命令行搜索Downloads
文件夹内重复下载的方法。
假设我下载了test.mp3
,但后来意外地再次下载了它,第二次下载将显示为test(1).mp3
。我想搜索文件名末尾但在文件扩展名之前有“(1)”的任何文件。执行此操作的命令是什么?
答案1
我想这就是你要找的东西:
for f in ~/Downloads/*; do
if [[ $f == *\([1-9]\).* ]]; then
echo "$f"
fi
done
编辑:@steeldriver 指出 globs 可以做到上述事情,所以更简单的解决方案是这样的:
printf '%s\n' ~/Downloads/*\([1-9]\).*
我更喜欢普通的 Bash,但你可以使用以下方法在一行中完成此操作find
:
find ~/Downloads/ -name '*\([1-9]\).*'
答案2
或者,我们可以计算校验和并打印重复项(这与下载重复项名称约定无关)。
md5sum ~/Download/*.mp3 | awk 'a[$1]{print $2 }{ a[$1]=$2}'