如何在Linux上按名称对某个目录中的文件进行排序

     2023-03-27     18

关键词:

【中文标题】如何在Linux上按名称对某个目录中的文件进行排序【英文标题】:How to sort files in some directory by the names on Linux 【发布时间】:2011-07-03 10:30:09 【问题描述】:

我使用opendir()readdir() 来显示目录中的文件名。但他们是无序的。我怎样才能对它们进行排序?语言是 C。

【问题讨论】:

@Christoffer Hammarström:对不起,我忘了说我必须使用 C 你应该添加C标签。 这比看起来更难,因为 Unix 按惯用顺序对文件进行排序,即 p5A 排在 p10A 和 p50A 之前。除非您将文件重命名为 p05A,否则您的字母排序将无法获得按名称排序的优点。 【参考方案1】:

也许您可以使用 scandir() 代替 opendir 和 readdir?

#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>

int
main(void)

   struct dirent **namelist;
   int n;

   n = scandir(".", &namelist, 0, alphasort);
   if (n < 0)
       perror("scandir");
   else 
       while (n--) 
       printf("%s\n", namelist[n]->d_name);
       free(namelist[n]);
       
       free(namelist);
   

【讨论】:

其实我尝试使用它,但它有一些错误。你能举一些例子或细节吗? 您可以在规范中找到如何使用scandir(按字母排序)的示例(参见示例部分):pubs.opengroup.org/onlinepubs/9699919799/functions/scandir.html【参考方案2】:

在 C 中对某些内容进行排序的惯用方法是使用 qsort() 函数。为此,最好安排将所有文件名收集到一个指针数组中,然后对数组进行排序。

这并不太难,但它确实需要一些动态数组管理,或者您对事物引入静态限制(文件名的最大长度、文件的最大数量)。

【讨论】:

scandir 为您完成这项工作。唯一不好的是你不能使用文件描述符指定目录。你必须传递名字。【参考方案3】:

您必须动态构建包含文件名的数据结构并确保它已排序。

您可以使用名称构建一个数组或链表,然后对其进行排序,但我更喜欢通过插入二叉树来对插入的值进行排序。

【讨论】:

linux下如何对目录中的文件进行统计

参考技术A在本文中,将展示几种查找Linux目录中的文件数量的不同方法。统计目录中的文件数量统计目录中文件的最简单方法是使用ls每行列出一个文件,并将输出通过管道符传递给wc计算数量:[root@localhost~]#ls-1U/etc|wc-l执行上面... 查看详情

使用 Jooq 在数值基础上按 varchar 字段(具有数值)对查询进行排序

...albasiswithJooq【发布时间】:2011-08-1202:46:49【问题描述】:如何对varchar字段进行排序,我已将ID设为varchar,我想对其进行数字排序。我们可以在SQL中使用sqlquery...order 查看详情

java示例代码_在java中对目录中的文件进行排序

java示例代码_在java中对目录中的文件进行排序 查看详情

java示例代码_在java中按日期对目录中的文件进行排序

java示例代码_在java中按日期对目录中的文件进行排序 查看详情

如何更改文件权限

参考技术A问题一:如何修改文件权限你可以在想要修改权限的文件夹或文件上单击右键,弹出“XXXX属性”的选框(XXXX表文件夹或文件名称),在里面会看到安全选项,找到里面的“XXX的权限”(XXX表用户名),可以选择某个用... 查看详情

如何在mongodb中以字母数字形式对1000000个元素数组进行排序

】如何在mongodb中以字母数字形式对1000000个元素数组进行排序【英文标题】:Howtosort1000000elementsarrayinalphanumericinmongodb【发布时间】:2022-01-0219:02:17【问题描述】:在这里,我在MongoDB中有载体数组,它有1000000个元素,如何在名称... 查看详情

如何使用空标题名称对 AG-Grid 中的列进行排序

】如何使用空标题名称对AG-Grid中的列进行排序【英文标题】:HowtosortcolumninAG-GridwithemptyHeaderName【发布时间】:2019-12-0312:01:54【问题描述】:如何在AG-Grid中使用空Header对列进行排序?正在传递的colDef:varcolumnDefs=[headerName:"",sortabl... 查看详情

如何按升序对文件名进行排序?

】如何按升序对文件名进行排序?【英文标题】:Howtosortfilenamesinascendingorder?【发布时间】:2013-05-2916:19:16【问题描述】:我在一个文件夹中有一组文件,所有文件都以相似的名称开头,除了一个。这是一个例子:Coordinate.txtSpect... 查看详情

按文本字符长度对目录中的文件进行排序并复制到其他目录[关闭]

】按文本字符长度对目录中的文件进行排序并复制到其他目录[关闭]【英文标题】:Sortfilesinadirectorybytheirtextcharacterlengthandcopytootherdirectory[closed]【发布时间】:2021-12-3023:38:04【问题描述】:我试图在目录中按字符长度查找最小的... 查看详情

如何对窗口中的某个字段进行排序以获得前 N 个值,并对 DolphinDB 中的相应字段进行聚合计算?

】如何对窗口中的某个字段进行排序以获得前N个值,并对DolphinDB中的相应字段进行聚合计算?【英文标题】:HowtosortafieldinthewindowforthetopNvaluesandperformaggregatecalculationsforthecorrespondingfieldinDolphinDB?【发布时间】:2022-01-0917:10:39【问... 查看详情

如何在c语言中通过查看行中的一个属性对文件的行进行排序?(代码片段)

在我的例子中,一行包括8个属性(字符串和整数),这些属性用逗号隔开(,).我根据逗号将这些属性分割开来,我有一个条件。打印文件中与用户输入的国家名称(属性之一)相同的行。所以我用以下方法来写strcasecmp(比较两个... 查看详情

如何按名称对具有匹配元素的值进行排序?

】如何按名称对具有匹配元素的值进行排序?【英文标题】:HowdoIsortvaluesbynamethathaveamatchingelement?【发布时间】:2022-01-1018:11:25【问题描述】:在这个DataFrame中,球队需要保持在同一个位置,但我想对每个球队中的球员进行排序... 查看详情

如何根据 Java Spark 2.1.1 中的字段名称对 structType 进行排序/排序

】如何根据JavaSpark2.1.1中的字段名称对structType进行排序/排序【英文标题】:HowtoOrder/SortthestructTypebasedonthefieldnamesinJavaSpark2.1.1【发布时间】:2019-03-0704:50:45【问题描述】:我有一个structType架构,我需要根据字段名称对架构进行排... 查看详情

如何按创建日期对文件管理器数组进行排序

】如何按创建日期对文件管理器数组进行排序【英文标题】:Howtosortthefilemanagerarraybycreationdate【发布时间】:2019-04-2104:47:59【问题描述】:我编写了检索文档目录中的CSV路径并将它们加载到表格视图中的代码。我正在尝试按创建... 查看详情

如何在 Linux 上按名称而不是 PID 杀死进程? [复制]

】如何在Linux上按名称而不是PID杀死进程?[复制]【英文标题】:HowcanIkillaprocessbynameinsteadofPID,onLinux?[duplicate]【发布时间】:2010-09-1417:25:20【问题描述】:有时当我尝试启动Firefox时,它会显示“Firefox进程已在运行”。所以我必须... 查看详情

如何按名称对文件列表进行排序以匹配 Windows 资源管理器显示它们的方式?

】如何按名称对文件列表进行排序以匹配Windows资源管理器显示它们的方式?【英文标题】:HowwouldIsortalistoffilesbynametomatchhowWindowsExplorerdisplaysthem?【发布时间】:2010-11-0400:30:31【问题描述】:假设我在资源管理器中按名称对文件... 查看详情

linux文件夹内文件复制,如何排除某个文件

...某个文件夹data下,有data1、data2、data3......dataN-1、dataN,如何能将data1......data10进行复制,而不复制其他文件~~~1、首先登录进linux系统,右键单击选择OpenInTerminal选项2、接下来我们在打开的终端命令行,首先用pwd命令查看当前目录... 查看详情

如何在VB中按某个组件对对象列表进行排序?

】如何在VB中按某个组件对对象列表进行排序?【英文标题】:HowcanIsortalistofobjectsbyacertaincomponentinVB?【发布时间】:2021-10-1611:23:57【问题描述】:我正在使用带有.NET3.5的VisualStudio2008,我正在尝试对存储某个对象的子对象的对象... 查看详情