查看原文
其他

最实用电脑技巧之:列出文件夹和子文件夹中的文件

码中人 码农真经 2023-12-25

以前我不知道有 everything 和 listary 这样的本地文件检索神器,一直傻傻的自建文件索引。

自建方法就是,把我电脑资料夹中所有文件的路径及名称统统放在一个filelist.txt的文件里。

比如以下目录:

会生成一个filelist.txt的文件:

./你不知道的js:[图灵程序设计丛书].你不知道的JavaScript(上卷).pdf[图灵程序设计丛书].你不知道的JavaScript(下卷).pdf[图灵程序设计丛书].你不知道的JavaScript(中卷).pdf./图灵数学-统计学丛书:图灵数学·统计学丛书26-陶哲轩实分析-[澳]陶哲轩-王昆扬(译)-人民邮电出版社-2008.pdf图灵数学·统计学丛书27-不等式(第2版)-[英]G·H·哈代-越民义(译)-人民邮电出版社-2008.pdf图灵数学·统计学丛书28-运筹学导论:高级篇(第8版)-[美]H·A·塔哈-人民邮电出版社-2008.pdf图灵数学·统计学丛书29-拉克斯《线性代数及其应用(第2版)》 习题解答.pdf... ...

然后,就可以通过该文本查找文件了。

这个方法很笨,好处是不需要额外软件(各大操作系统自带功能),坏处就是你得先打到这个文件在哪,哈哈。

接下就介绍一下各操作系统如何生成文件列表。

Win 7  cmd dos dir命令


win7 下默认的命令行工具是 cmd.exe,可以通过dir命令获得文件列表。
dir 命令是directory的缩写,功能是显示一个磁盘上全部或部分文件目录(文件或文件夹),所显示的文件信息包括文件名、扩展名、文件长度、文件建立或最后一次修改的日期和时间等,不显示文件的具体内容。
语法
dir [<盘符>][<路径>][<文件名>][<扩展名>][/p][/w][/s][/a[:]属性][/o[:]排序方式]
其中:
dir /b   列出每个目录名或文件名,每行一个(包含文件扩展名),但是不显示标题信息或摘要
dir /s   是列出指定目录和其下属各级子目录中的所有文件。
所以要玩成以上操作有三步:
  1. 去到所在目录 cd d:/book/图灵600
  2. 列出文件及子目录文件名 dir /b/s
  3. 输出重定向到文件  dir /b/s > filelist.txt

输出重定向

重定向一般通过在命令间插入特定的符号来实现。特别的,这些符号的语法如下所示:
command1 > file1
上面这个命令执行command1然后将输出的内容存入file1。
注意任何file1内的已经存在的内容将被新内容替代。如果要将新内容添加在文件末尾,请使用>>操作符。

Linux ls命令


从Win 7 升级到Win 10之后,默认的命令行工具是 PowerShell。命令 dir /b/s 就不行了。
好在Win 10 内置了linux子系统,于是就使用linux ls命令。
ls命令
ls命令用于显示文件目录列表,和Windows系统下DOS命令dir类似。当执行ls命令时,默认显示的只有非隐藏文件的文件名、以文件名进行排序及文件名代表的颜色显示。当不加参数时,默认列出当前目录的列表信息。ls命令使用频率非常高,参数也非常多,多达四五十个,本文只介绍几个常用的参数,其他参数可以通过man命令查看帮助手册。
ls语法
ls [选项] [目录或文件名]
参数:
  • -a:–all的缩写,显示所有的文件,包括隐藏文件(以.开头的文件)
  • -d--directory的缩写,仅列出目录本身,而不是列出目录里的内容列表。
  • -f:直接列出结果,而不进行排序(ls默认会以文件名排序)
  • -R: 递归列出遇到的子目录。
  • -l:列出长数据串,显示出文件的属性与权限等数据信息(常用)
  • … …
所以 ls -R可以完成操作:

Win 10 Powershell


当然,PowerShell无疑也是可以罗列文件。查看了文档,主要有两种方式:
1 Get-ChildItem
PowerShell 可以使用 Get-ChildItem 获取文件夹中的所有项目。
  •  -Force 参数以显示隐藏或系统项目
  •  -Recurse 参数可以显示子文件夹内容
  •  -Name 参数仅返回指定路径中的文件或目录名称
所以完整命令是:
Get-ChildItem -Name -Recurse > filelist.txt

2 Get-ChildItem 简写版
Get-ChildItem 有一个简写形式是 dir,它与 dos 的dir相似,参数却不一样,这也是困扰我的原因。
-name 对应 -n, -Recurse 对应 -r 。
所以简写形式为:
dir -n -r > filelist.txt
参考资料
  • dir | Microsoft Docs

  • dir (命令) – 维基百科,自由的百科全书

  • linux命令详解之ls命令_蝈蝈的博客-CSDN博客_linux ls命令详解

  • Working with Files and Folders – PowerShell | Microsoft Docs

  • Get-ChildItem (Microsoft.PowerShell.Management) – PowerShell | Microsoft Docs

  • windows – Please explain, simply, dir /b > dirlist.txt with powershell – Super User

  • windows – Please explain, simply, dir /b > dirlist.txt with powershell – Super User

往期推荐

各领域最值得推荐的入门书籍(合集)

图灵600+

Markdown完全教程

盗火者译丛全17册(囚徒的困境、火星的故事、圆的历史、意识的解释...)

最好的JavaScript在线教程

继续滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存