history
我可以获得按最常用顺序排序的输出吗?
我知道如何使用编程语言来做到这一点,但不知道如何从 shell 中做到这一点。我使用的是 macOS 上的 zsh。
我知道我可以使用uniq
和sort
某些东西来删除history
输出中的初始数字字段。但这只会删除重复数据,而不会考虑“重复频率”。
这在 shell 中可行吗?还是我应该求助于编程语言?
history
我可以获得按最常用顺序排序的输出吗?
我知道如何使用编程语言来做到这一点,但不知道如何从 shell 中做到这一点。我使用的是 macOS 上的 zsh。
我知道我可以使用uniq
和sort
某些东西来删除history
输出中的初始数字字段。但这只会删除重复数据,而不会考虑“重复频率”。
这在 shell 中可行吗?还是我应该求助于编程语言?
我正在用音频文件做一些事情,大多数但不是全部都是 mp3 文件。现在我想只对不是 mp3 文件的文件运行一些命令,或者只对那些没有.mp3
扩展名的文件运行一些命令。
我认为自己非常擅长正则表达式,但不擅长文件通配,这在意想不到的方面略有不同。
我环顾四周,从其他 SO & SE 答案中了解到 Bash 具有“扩展的 globbing”,允许我这样做:
file ../foo/bar/*.!(mp3)
但是除了形成文件扩展名的文件名之外,我的一些文件名中还有点:
../foo/bar/Naked_Scientists_Show_19.10.15.mp3
../foo/bar/YWCS_ep504-111519-pt1_5ej4_41cc9320.mp3_42827d48daefaa81ec09202e67fa8461_24419113.mp3
../foo/bar/eLife_Podcast_19.09.26.mp3
../foo/bar/gdn.sci.080428.bg.science_weekly.mp3
似乎 glob 从第一个点开始匹配,而不是从最后一个点开始匹配。我查看了文档,但似乎它们远不如正则表达式强大。但是我并没有真正了解所有内容,因为我没有花太多时间在 *nix shell 上。
我是否错过了一些仍然可以使用 Bash globbing 执行此操作的方法?如果没有,使用 find 或其他工具实现相同目标的方法仍然值得了解。