Skip to content
← 返回文件与文本处理列表
文件与文本处理任务与配置

命令与脚本:文件、目录与磁盘 · 列出、定位与识别文件 ​

返回分篇目录

列出、定位与识别文件 ​

先列出目录或用条件定位条目,再检查文件类型;jdupes 用于寻找重复文件。ls、exa 和 eza 的选项分别保留。

ls · 列出目录中的内容 ​

更多信息:https://www.gnu.org/software/coreutils/manual/html_node/ls-invocation.html。

  • 列出目录中的文件,每个文件占一行:
bash
ls -1
  • 列出包含隐藏文件的所有文件:
bash
ls {{[-a|--all]}}
  • 列出所有文件,如果是目录,则在目录名后面加上「/」:
bash
ls {{[-F|--classify]}}
  • 列出包含隐藏文件的所有文件信息,包括权限,所有者,大小和修改日期:
bash
ls {{[-la|-l --all]}}
  • 列出所有文件信息,大小用人类可读的单位表示(KiB, MiB, GiB):
bash
ls {{[-lh|-l --human-readable]}}
  • 列出所有文件信息,按大小降序排序:
bash
ls {{[-lSR|-lS --recursive]}}
  • 列出所有文件信息,按修改日期从旧到新排序:
bash
ls {{[-ltr|-lt --reverse]}}
  • 只列出目录:
bash
ls {{[-d|--directory]}} */

tree · 以树的形式显示当前目录的内容 ​

更多信息:https://manned.org/tree。

  • 显示深度达到 “级数” 级的文件和目录(其中 1 表示当前目录):
bash
tree -L {{级数}}
  • 只显示目录:
bash
tree -d
  • 同时显示隐藏文件并开启彩色输出:
bash
tree -a -C
  • 打印没有缩进行的树,显示完整路径(使用-N不转义空格和特殊字符):
bash
tree -i -f
  • 以可读格式打印每个文件节点的大小,目录显示其累积大小(类似在du命令中所示):
bash
tree -s -h --du
  • 使用通配符(glob)模式在树层次结构中查找文件,并从显示结果中略去不含匹配文件的目录(不删除磁盘文件):
bash
tree -P '{{*.txt}}' --prune
  • 在树层次结构中查找目录,从显示结果中略去不匹配目录(不删除磁盘文件):
bash
tree -P {{文件夹名}} --matchdirs --prune
  • 忽略指定目录显示树:
bash
tree -I '{{目录名1|目录名2}}'

find · 在指定目录树下递归查找文件或目录 ​

另请参阅:fd。 更多信息:https://manned.org/find。

  • 通过扩展名查找文件:
bash
find {{指定目录}} -name '{{*.ext}}'
  • 查找匹配多个路径或名称模式的文件:
bash
find {{指定目录}} -path '{{**/path/**/*.ext}}' -or -name '{{*pattern*}}'
  • 查找匹配指定名称的目录,不区分大小写:
bash
find {{指定目录}} -type d -iname '{{*lib*}}'
  • 查找匹配指定模式的文件,排除特定路径:
bash
find {{指定目录}} -name '{{*.py}}' -not -path '{{*/site-packages/*}}'
  • 查找符合指定大小范围的文件,将递归深度限制为 "1":
bash
find {{指定目录}} -maxdepth 1 -size {{+500k}} -size {{-10M}}
  • 对每个文件运行命令(在命令中使用 {} 代表当前文件):
bash
find {{指定目录}} -name '{{*.ext}}' -exec {{wc -l {} }}\;
  • 查找最近 7 天修改的文件:
bash
find {{指定目录}} -daystart -mtime -{{7}}
  • 查找空(0 字节)的文件并删除:
bash
find {{指定目录}} -type {{f}} -empty -delete

fd · 在文件系统中查找条目 ​

另请参阅:find, regex。 更多信息:https://github.com/sharkdp/fd#command-line-options。

  • 在当前目录中递归查找匹配特定模式的文件:
bash
fd "{{正则表达式}}"
  • 在特定目录中查找文件:
bash
fd "{{正则表达式}}" {{路径/到/文件}}
  • 查找具有特定扩展名的文件:
bash
fd {{[-e|--extension]}} {{扩展名}}
  • 仅查找匹配特定模式的文件夹:
bash
fd "{{正则表达式}}" {{[-t|--type]}} {{[d|directory]}}
  • 在搜索中包含被忽略和隐藏的文件:
bash
fd "{{正则表达式}}" {{[-HI|--hidden --no-ignore]}}
  • 排除匹配特定通配符(glob)模式的文件:
bash
fd "{{正则表达式}}" {{[-E|--exclude]}} {{通配符}}
  • 对每个返回的搜索结果执行命令:
bash
fd "{{正则表达式}}" {{[-x|--exec]}} {{命令}}
  • 仅在当前目录中查找文件:
bash
fd "{{正则表达式}}" {{[-d|--max-depth]}} 1

file · 确定文件类型 ​

另请参阅:stat。 更多信息:https://manned.org/file。

  • 提供指定文件类型的描述,对于没有文件扩展名的文件可以正常工作:
bash
file {{文件名}}
  • 查看压缩文件并确定其中的文件类型:
bash
file {{[-z|--uncompress]}} {{xxx.zip}}
  • 允许文件与特殊文件或设备文件一起使用:
bash
file {{[-s|--special-files]}} {{文件名}}
  • 不要在第一个文件类型匹配时停止;继续执行直到文件结束:
bash
file {{[-k|--keep-going]}} {{文件名}}
  • 确定文件的 MIME 编码类型:
bash
file {{[-i|--mime]}} {{文件名}}

exa · ls 的现代替代品(列出目录内容) ​

注意:exa 已不再维护。请改用 eza。 另请参阅:eza。 更多信息:https://github.com/ogham/exa#command-line-options。

  • 每行列出一个文件:
bash
exa {{[-1|--oneline]}}
  • 列出所有文件,包括隐藏文件:
bash
exa {{[-a|--all]}}
  • 以长格式列出所有文件(包含权限、所有者、大小和修改日期):
bash
exa {{[-l|--long]}} {{[-a|--all]}}
  • 列出文件,最大的排在最上面:
bash
exa {{[-r|--reverse]}} {{[-s|--sort]}} {{size}}
  • 显示文件树,深度为三层:
bash
exa {{[-l|--long]}} {{[-T|--tree]}} {{[-L|--level]}} {{3}}
  • 按修改日期排序列出文件(从最旧的开始):
bash
exa {{[-l|--long]}} {{[-s|--sort]}} {{modified}}
  • 列出文件及其表头、图标和 Git 状态:
bash
exa {{[-l|--long]}} {{[-h|--header]}} --icons --git
  • 不列出 .gitignore 中提到的文件:
bash
exa --git-ignore

eza · 基于 exa 构建的现代化、持续维护的 ls 替代品 ​

更多信息:https://github.com/eza-community/eza。

  • 每行列出一个文件:
bash
eza {{[-1|--oneline]}}
  • 列出所有文件,包括隐藏文件:
bash
eza {{[-a|--all]}}
  • 以长格式列出所有文件(包含权限、所有者、大小和修改日期):
bash
eza {{[-al|--all --long]}}
  • 列出文件,最大的排在最上面:
bash
eza {{[-r|--reverse]}} {{[-s|--sort]}} {{size}}
  • 显示文件树,深度为三层:
bash
eza {{[-lT|--long --tree]}} {{[-L|--level]}} {{3}}
  • 按修改日期排序列出文件(从最旧的开始):
bash
eza {{[-l|--long]}} {{[-s|--sort]}} {{modified}}
  • 列出文件及其表头、图标和 Git 状态:
bash
eza {{[-lh|--long --header]}} --icons --git
  • 不列出 .gitignore 中提到的文件:
bash
eza --git-ignore

jdupes · 一个强大的重复文件查找器,并且是 fdupes 的一个增强分支 ​

更多信息:https://codeberg.org/jbruchon/jdupes#usage。

  • 搜索单个目录:
bash
jdupes {{路径/到/目录}}
  • 搜索多个目录:
bash
jdupes {{目录1 目录2 ...}}
  • 递归地搜索所有目录:
bash
jdupes {{[-r|--recurse]}} {{路径/到/目录}}
  • 递归地搜索目录,并让用户选择要保留的文件:
bash
jdupes {{[-d|--delete]}} {{[-r|--recurse]}} {{路径/到/目录}}
  • 搜索多个目录并跟随目录2下的子目录,而不是目录1:
bash
jdupes {{目录1}} {{[-R|--recurse:]}} {{目录2}}
  • 搜索多个目录并在结果中保持目录顺序:
bash
jdupes {{[-O|--param-order]}} {{目录1 目录2 目录3 ...}}

继续阅读