命令与脚本:文件、目录与磁盘 · 列出、定位与识别文件
列出、定位与识别文件
先列出目录或用条件定位条目,再检查文件类型;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 -deletefd · 在文件系统中查找条目
另请参阅:
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]}} 1file · 确定文件类型
另请参阅:
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-ignoreeza · 基于 exa 构建的现代化、持续维护的 ls 替代品
- 每行列出一个文件:
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-ignorejdupes · 一个强大的重复文件查找器,并且是 fdupes 的一个增强分支
- 搜索单个目录:
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 ...}}继续阅读
- 文件与文本处理完整实践与解答
- 文件与文本处理上手与对象
- 文件与文本处理任务与配置