将文件与匹配的扩展名配对
假设我有以下文件列表:
a.1
a.2
a.3
b.1
b.2
是否有一个 bash 单行代码可以找到一个不存在具有相同扩展名的“b”的“a”文件? (即a.3:不匹配)
我确信我可以编写一个简短的 bash/perl 脚本来执行此操作。
但我想知道是否有任何“技巧”(当然,GNU 工具可供我使用;awk、sed、find ...)
Let's say I have this list of files:
a.1
a.2
a.3
b.1
b.2
Is there a bash one-liner that could find the one 'a' file for which there is no 'b' with the same extension? (i.e. a.3: no match)
I'm sure I could write a short bash/perl script to do this.
But I would like to know if there is any "trick" for this (of course, GNU tools are at my disposal; awk, sed, find ...)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
你可以试试这个:
You could try this:
这是我的 bash 一句话,
我喜欢上面的解决方案,因为它只使用 bash 而没有其他工具。然而,为了展示 Unix 工具的强大功能,下一个解决方案使用 4 个:ls、sed、sort 和 uniq:
Here is my bash one-liner
I like the above solution since it only uses bash and no other tools. However, to showcase the power of Unix tools, the next solution uses 4: ls, sed, sort, and uniq:
如果你可以使用 Perl:
If you can use Perl:
bash 版本 4 有关联数组,因此您可以这样做:
或者,使用 awk:
bash version 4 has associative arrays, so you can do this:
Or, with awk:
红宝石(1.9+)
Ruby(1.9+)