热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux目录名排序,关于linux:在shell中按名称对目录内容(包括隐藏文件)进行排序...

有没有一种很好的方法来对shell中的目录内容(包括隐藏文件)进行排序?基本上我希望能够在我的GUI文件管理器中完成ls目录。在典型目录中,输出如下&#

有没有一种很好的方法来对shell中的目录内容(包括隐藏文件)进行排序? 基本上我希望能够在我的GUI文件管理器中完成ls目录。 在典型目录中,输出如下:

.a_hidden_dir

.b_hidden_dir

.c_hidden_dir

a_dir

b_dir

c_dir

.a_hidden_file

.b_hidden_file

.c_hidden_file

a_file

b_file

c_file

当然ls有--group-directories-first选项,但这只是我们的一部分,因为sort忽略了前导.,它没有将隐藏文件排在顶部。

我希望能够以这种方式对ls,find或其他路径列表中的输出进行排序。 有谁知道这样做的好方法 - 也许sort -k KEYDEF?

现在我正在做这样的事情(它假设目录名称有一个斜杠附加到它们):

pathsort(){

input=$(cat)

(

awk &#39;/^\..&#43;\/$/&#39; <<

awk &#39;/^[^.].&#43;\/$/&#39; <<

awk &#39;/^\..&#43;[^/]$/&#39; <<

awk &#39;/^[^.].&#43;[^/]$/&#39; <<

) | sed &#39;s/\/$//&#39;

}

\ls -Ap | pathsort

上面的代码完成了工作&#xff0c;但它远非理想。 请告诉我有更好的方法......

发布您期望的输出。

ls -la不工作&#xff1f;

可以从运行\ls -Ap获得样本输入。 预期的样本输出位于上面第一个引用的文本块中(以.a_hidden_dir开头)。 ls -la当然"工作"&#xff0c;但我试图将输出排序&#xff0c;隐藏的东西在顶部&#xff0c;就像它在文件管理器中一样。 我想要它订购隐藏的目录&#xff0c;目录&#xff0c;隐藏文件&#xff0c;文件。

您是否尝试在环境中设置LANG &#61; C&#xff0c;以便按C顺序完成排序&#xff0c;其中带有前导点的名称出现在大多数其他名称之前。

&#64;JonathanLeffler啊谢谢你&#xff0c;就这么简单&#xff01; 我之前使用LC_ALL &#61; C和sort进行了可重现的构建&#xff0c;但是不知道LANG &#61; C. LANG&#61;C \ls -A --group-directories-first正是我所需要的......而且我在这里操纵一些可怕的装置。 再次感谢&#xff01;

对于ls和sort&#xff0c;您可以使用LC_ALL代替LANG&#xff0c;或者使用LANG。 你也应该能够使用LC_COLLATE; 这是最精确的。

Jonathan Leffler在评论中提出了一个简单而实用的解决方案&#xff1a;设置本地环境变量LANG&#61;C。在我的系统上&#xff0c;默认的LANG&#61;en_US.UTF-8会导致不合需要的路径名排序特征。 C显然是指使用ASCII字符集的字节字符排序。设置LANG&#61;C的结果是&#39;dotfiles&#39;(包括目录)被排序到顶部。注意也可以使用LC_ALL&#61;C&#xff0c;因为LC_ALL是LANG和其他LC_*变量的超集。总而言之&#xff0c;如果您想要一致的排序体验&#xff0c;强烈建议将语言环境设置为C以排序命令。

这是所需路径名排序层次结构的最终解决方案(dotfile dirs>普通dirs> dotfile文件>普通文件)&#xff1a;

LC_ALL&#61;C ls -A --group-directories-first

注意&#xff1a;这还包括文件和目录的符号链接

类似地&#xff0c;为了排序任何其他路径名输出源&#xff1a;

findtool | LC_ALL&#61;C sort

有趣的是&#xff0c;我认为对目录进行排序是最简单的&#xff1a;

ls -1d .*/; ls -1d */

文件更难与目录分离&#xff0c;您需要使用find&#xff1a;

(find . -maxdepth 1 -type f -name &#39;.*&#39; -printf &#39;%P

&#39; | sort); (find . -maxdepth 1 -type f -not -name &#39;.*&#39; -printf &#39;%P

&#39; | sort)

把整个事情放在一起&#xff1a;

alias lss&#61;"

ls -1d .*/;   # Hidden directories

ls -1d */;    # Normal directories

find . -maxdepth 1 -type f -name &#39;.*&#39; -printf &#39;%P

&#39; | sort;

# Hidden files

find . -maxdepth 1 -type f -not -name &#39;.*&#39; -printf &#39;%P

&#39; | sort

# Normal files

"

一个警告&#xff1a;还有其他一些项目会丢失&#xff0c;比如链接和设备。

你的lsd看起来不错。 我使用lsd (find -L -maxdepth 1 -type d -name &#39;.*&#39; -printf &#39;%P

&#39; | sort; find -L -maxdepth 1 -mindepth 1 -type d ! -name &#39;.*&#39; -printf &#39;%P

&#39; | sort)和lsf (find -L -maxdepth 1 -type f -name &#39;.*&#39; -printf &#39;%P

&#39; | sort; find -L -maxdepth 1 -type f ! -name &#39;.*&#39; -printf &#39;%P

&#39; | sort)完成了与第二个示例非常相似的操作。 -L将捕获到dirs /文件的链接。 我希望能够对其他输出进行排序......结果证明这是一件非常复杂的事情。 您可以通过LC_ALL&#61;C \ls -A --g获得所需的排序。&#xff1a;P

是的&#xff0c;也许您应该通过更新回答您自己的问题&#xff0c;并将其标记为已回答。 这样&#xff0c;可能有类似问题的其他人会看到你的答案。



推荐阅读
  • OBS Studio自动化实践:利用脚本批量生成录制场景
    本文探讨了如何利用OBS Studio进行高效录屏,并通过脚本实现场景的自动生成。适合对自动化办公感兴趣的读者。 ... [详细]
  • 本文介绍了如何通过安装和配置php_uploadprogress扩展来实现文件上传时的进度条显示功能。通过一个简单的示例,详细解释了从安装扩展到编写具体代码的全过程。 ... [详细]
  • Hadoop MapReduce 实战案例:手机流量使用统计分析
    本文通过一个具体的Hadoop MapReduce案例,详细介绍了如何利用MapReduce框架来统计和分析手机用户的流量使用情况,包括上行和下行流量的计算以及总流量的汇总。 ... [详细]
  • 在使用mybatis进行mapper.xml测试的时候发生必须为元素类型“mapper”声明属性“namespace”的错误项目目录结构UserMapper和UserMappe ... [详细]
  • Gradle 是 Android Studio 中默认的构建工具,了解其基本配置对于开发效率的提升至关重要。本文将详细介绍如何在 Gradle 中定义和使用共享变量,以确保项目的一致性和可维护性。 ... [详细]
  • 本文详细介绍如何在SSM(Spring + Spring MVC + MyBatis)框架中实现分页功能。包括分页的基本概念、数据准备、前端分页栏的设计与实现、后端分页逻辑的编写以及最终的测试步骤。 ... [详细]
  • 【MySQL】frm文件解析
    官网说明:http:dev.mysql.comdocinternalsenfrm-file-format.htmlfrm是MySQL表结构定义文件,通常frm文件是不会损坏的,但是如果 ... [详细]
  • 问题场景用Java进行web开发过程当中,当遇到很多很多个字段的实体时,最苦恼的莫过于编辑字段的查看和修改界面,发现2个页面存在很多重复信息,能不能写一遍?有没有轮子用都不如自己造。解决方式笔者根据自 ... [详细]
  • 如何从BAM文件绘制ATAC-seq插入片段长度分布图?
    在ATAC-seq数据处理中,插入片段长度的分布图是一个重要的质量控制指标,它能反映出核小体的周期性排列。本文将详细介绍如何从BAM文件中提取并绘制这些数据。 ... [详细]
  • 本文探讨了如何通过Service Locator模式来简化和优化在B/S架构中的服务命名访问,特别是对于需要频繁访问的服务,如JNDI和XMLNS。该模式通过缓存机制减少了重复查找的成本,并提供了对多种服务的统一访问接口。 ... [详细]
  • 本文探讨了如何使用Scrapy框架构建高效的数据采集系统,以及如何通过异步处理技术提升数据存储的效率。同时,文章还介绍了针对不同网站采用的不同采集策略。 ... [详细]
  • 使用Python构建网页版图像编辑器
    本文详细介绍了一款基于Python开发的网页版图像编辑工具,具备多种图像处理功能,如黑白转换、铅笔素描效果等。 ... [详细]
  • 视觉Transformer综述
    本文综述了视觉Transformer在计算机视觉领域的应用,从原始Transformer出发,详细介绍了其在图像分类、目标检测和图像分割等任务中的最新进展。文章不仅涵盖了基础的Transformer架构,还深入探讨了各类增强版Transformer模型的设计思路和技术细节。 ... [详细]
  • 本文详细介绍如何在华为鲲鹏平台上构建和使用适配ARM架构的Redis Docker镜像,解决常见错误并提供优化建议。 ... [详细]
  • 在使用 Cacti 进行监控时,发现已运行的转码机未产生流量,导致 Cacti 监控界面显示该转码机处于宕机状态。进一步检查 Cacti 日志,发现数据库中存在 SQL 查询失败的问题,错误代码为 145。此问题可能是由于数据库表损坏或索引失效所致,建议对相关表进行修复操作以恢复监控功能。 ... [详细]
author-avatar
惰堂_301
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有