热门标签 | 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;可能有类似问题的其他人会看到你的答案。



推荐阅读
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 1关于字符串相邻的两个或多个字符串字面值(引号引起来的字符)将会自动连接到一起:str_catpython!str_cat输出:python!把很长 ... [详细]
  • 网络安全是一个非常重要的课题,基本上你运行的服务后台越多,你就可能打开更多的安全漏洞.如果配置的恰当的话,Linux本身是非常安全可靠的,假使在Linux系统中有某个安全缺陷,由于Linu ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 本文介绍了三种方法来实现在Win7系统中显示桌面的快捷方式,包括使用任务栏快速启动栏、运行命令和自己创建快捷方式的方法。具体操作步骤详细说明,并提供了保存图标的路径,方便以后使用。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 本文介绍了使用readlink命令获取文件的完整路径的简单方法,并提供了一个示例命令来打印文件的完整路径。共有28种解决方案可供选择。 ... [详细]
  • Python脚本编写创建输出数据库并添加模型和场数据的方法
    本文介绍了使用Python脚本编写创建输出数据库并添加模型数据和场数据的方法。首先导入相应模块,然后创建输出数据库并添加材料属性、截面、部件实例、分析步和帧、节点和单元等对象。接着向输出数据库中添加场数据和历程数据,本例中只添加了节点位移。最后保存数据库文件并关闭文件。文章还提供了部分代码和Abaqus操作步骤。另外,作者还建立了关于Abaqus的学习交流群,欢迎加入并提问。 ... [详细]
  • 转自:http:www.phpweblog.netfuyongjiearchive200903116374.html一直对字符的各种编码方式懵懵懂懂,什 ... [详细]
  • oracle安装时找不到启动,Oracle没有开机自启是怎么回事?这一步骤很重要
    重启Oracle数据库重启Oracle数据库包括启动Oracle数据库服务进程和启动Oracle数据库两步,大家继续往下看。按照《【Oracle】什么?作为DBA&# ... [详细]
  • LINUX运行谷歌TTS,中文TTS 的简单实现(基于linux)之 语音库的实现
    语音库保存着常用汉字的发音(多音的汉字只记录其一种发音,这也是本系统的一个缺陷,需要以后完善),所以先要得到一汉字集,这个汉 ... [详细]
  • Linux Shell脚步的格式
    Shell脚步等多个命令的组合,可以做成一个shell文件(1.sh)赋权执行执行命令的方式前两张新的进程中执行,对当前进程不产生影响(cdtmp;pwds ... [详细]
  • 1.脚本功能1)自动替换jar包中的配置文件。2)自动备份老版本的Jar包3)自动判断是初次启动还是更新服务2.脚本准备进入ho ... [详细]
  • c语言 怎么访问64位地址_C语言调动硬件的原理是什么?
    大家都知道我们可以使用C语言写一段程序来控制硬件工作,但你知道其工作原理吗?1c语言在实际运行中,都是以汇编指令的方式运行的,由编译器把C ... [详细]
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社区 版权所有