macOS 文件、磁盘与目录命令 · 文件、目录与磁盘
macOS 文件、磁盘与目录命令
文件、目录与磁盘
查找文件、检查元数据与 Spotlight 索引
按名称和 Spotlight 条件找文件,随后核对状态和属性;Spotlight 索引本身的管理见 mdutil。
locate(macOS) · 快速查找文件名
- 在数据库中查找关键字。注意:数据库定期重新更新(通常每周或每天):
bash
locate "{{关键字}}"- 按文件名查找文件(不包含填充字符的模式被解释为
*关键字*):
bash
locate */{{文件名}}- 重新建立文件数据索引数据库。如果要查找最近添加的文件,则需要执行此操作:
bash
sudo /usr/libexec/locate.updatedbmdfind(macOS) · 列出与给定查询匹配的文件
- 按文件名查找文件:
bash
mdfind -name {{文件}}- 按内容查找文件:
bash
mdfind "{{查找的字符串}}"- 在给定目录中查找包含字符串的文件:
bash
mdfind -onlyin {{目录}} "{{字符串}}"mdutil(macOS) · 管理 Spotlight(聚焦搜索)用于搜索的索引数据
- 显示指定卷('/')的索引状态:
bash
mdutil -s {{/}}- 打开 / 关闭给定卷的 Spotlight 索引:
bash
mdutil -i {{on|off}} {{指定卷文件夹}}- 清除索引数据并重新建立索引:
bash
mdutil -E {{指定卷文件夹}}stat(macOS) · 显示文件状态
- 显示文件属性,如大小、权限、创建和访问日期等:
bash
stat {{文件}}- 与上面相同,但更详细(更类似于 Linux 的
stat):
bash
stat -x {{文件}}- 只显示文件权限:
bash
stat -f %Mp%Lp {{文件}}- 显示文件的所有者和所属组:
bash
stat -f "%Su %Sg" {{文件}}- 以字节为单位显示文件的大小:
bash
stat -f "%z %N" {{文件}}GetFileInfo(macOS) · 获取有关 HFS+ 目录中文件的信息
更多信息:https://keith.github.io/xcode-man-pages/GetFileInfo.1.html。
- 显示有关给定文件的信息:
bash
GetFileInfo {{路径/文件名}}- 显示给定文件的创建日期和时间:
bash
GetFileInfo -d {{路径/文件名}}- 显示给定文件的上次修改日期和时间:
bash
GetFileInfo -m {{路径/文件名}}- 显示给定文件的创建者:
bash
GetFileInfo -c {{路径/文件名}}xattr(macOS) · 用于扩展文件系统属性的实用程序
- 列出 键:值 列表,显示指定文件的值扩展属性:
bash
xattr -l {{文件名}}- 为给定文件写入属性:
bash
xattr -w {{属性键名}} {{属性值}} {{文件名}}- 从给定文件中删除属性:
bash
xattr -d {{com.apple.quarantine}} {{文件名}}- 从给定文件中删除所有扩展属性:
bash
xattr -c {{文件名}}- 递归删除给定目录中文件的属性:
bash
xattr -rd {{属性键名}} {{目录}}chflags(macOS) · 更改文件或文件夹的标志
更多信息:https://keith.github.io/xcode-man-pages/chflags.1.html。
- 给文件设置 hidden(隐藏)标签:
bash
chflags hidden {{文件路径}}- 取消文件的 hidden 标签:
bash
chflags nohidden {{文件路径}}- 递归地给文件夹中每个文件设置 uchg 标志:
bash
chflags -R uchg {{文件夹路径}}- 递归地撤销文件夹中每个文件设置的 uchg 标志:
bash
chflags -R nouchg {{文件夹路径}}打开预览、编辑与跟踪文件访问
open 和 qlmanage 用于打开或预览,xed 用于 Xcode 编辑,opensnoop 跟踪实际文件访问。
open(macOS) · 打开文件、目录和应用程序
- 使用系统关联的应用程序打开文件:
bash
open {{文件名.扩展名}}- 运行图形化的 macOS 应用程序:
bash
open -a "{{应用程序名}}"- 运行指定包标识符的图形化 macOS 应用程序(请参阅
OSascript命令,查询如何获取应用程序的包标识符):
bash
open -b {{com.domain.application}}- 在"访达(finder)"中打开当前文件夹:
bash
open .- 打开"访达(finder)", 并且给出指定文件:
bash
open -R {{路径/到/文件}}- 使用系统默认应用程序,打开当前目录中所有给定扩展名的文件:
bash
open {{*.扩展名}}- 通过包标识符打开应用程序的新实例:
bash
open -n -b {{com.domain.application}}qlmanage(macOS) · QuickLook 服务器工具
更多信息:https://keith.github.io/xcode-man-pages/qlmanage.1.html。
- 快速显示一个或多个文件:
bash
qlmanage -p {{路径/到/文件1 路径/到/文件2 ...}}- 计算生成当前目录中所有 JPEG 文件的缩略图,300px 宽 PNG 格式,并将它们放在一个指定目录中:
bash
qlmanage {{*.jpg}} -t -s {{300}} -o {{指定目录}}- 重置快速查看:
bash
qlmanage -rxed(macOS) · 用 Xcode 打开要编辑的文件
- 用 Xcode 打开文件:
bash
xed {{文件名}}- 在 Xcode 中打开文件,如果不存在则创建:
bash
xed --create {{文件名}}- 在 Xcode 中打开一个文件并跳转到第 75 行:
bash
xed --line 75 {{文件名}}opensnoop(macOS) · 跟踪系统中打开的文件标识符
更多信息:https://keith.github.io/xcode-man-pages/opensnoop.1m.html。
- 输出当前系统内被打开的所有文件:
bash
sudo opensnoop- 跟踪给定进程名,打开的所有文件:
bash
sudo opensnoop -n "{{进程名}}"- 跟踪给定 PID(进程号),打开的所有文件:
bash
sudo opensnoop -p {{pid}}- 跟踪打开了指定文件的继承:
bash
sudo opensnoop -f {{路径 / 文件}}复制目录、拆分文件与恢复映像
普通目录复制用 ditto,拆分用 split;块级复制 dd 和映像恢复 asr 单独列出,按操作对象选择。
ditto(macOS) · 复制文件和目录
- 用源目录的内容覆盖目标目录的内容:
bash
ditto {{源文件路径}} {{目标文件路径}}- 为复制的每个文件打印一行到终端窗口:
bash
ditto -V {{源文件路径}} {{目标文件路径}}- 复制给定的文件或目录,同时保留原始文件权限:
bash
ditto -rsrc {{源文件路径}} {{目标文件路径}}split(macOS) · 把一个文件拆分成几块
- 分割一个文件,每个分割部分有 10 行(除了最后一个):
bash
split -l 10 {{路径/到/文件}}- 用
regex式拆分文件。匹配行将是下一个输出文件的第一行:
bash
split -p {{cat|^[dh]og}} {{路径/到/文件}}- 拆分一个文件,每个拆分中有 512 个字节(除了最后一个文件,使用 512K 表示 Kb,512M 表示 Mb):
bash
split -b 512 {{路径/到/文件}}dd(macOS) · 转换并复制文件
- 从 isohybrid 文件(如 archlinux-xxx.iso)制作可用于引导系统启动的 USB 驱动器:
bash
dd if={{文件.iso}} of={{/dev/usb 设备}}- 将驱动器克隆到具有 4MB 块的另一个驱动器并忽略错误:
bash
dd bs=4m conv=noerror if={{/dev/源设备}} of={{/dev/目标设备}}- 使用内核随机驱动程序生成指定数量个随机字节的文件:
bash
dd bs={{100}} count={{1}} if=/dev/urandom of={{目标驱动器,接收随机数据文件名}}- 对磁盘的写入性能进行基准测试:
bash
dd bs={{1024}} count={{1000000}} if=/dev/zero of={{1GB 的文件名}}asr(macOS) · 将磁盘映像还原(复制)到卷上
命令名称是 Apple Software Restore 的缩写。 更多信息:https://keith.github.io/xcode-man-pages/asr.8.html。
- 将磁盘映像复制到目标卷:
bash
sudo asr restore --source {{映像名.dmg}} --target {{卷路径}}- 在复制之前擦除目标卷:
bash
sudo asr restore --source {{映像名.dmg}} --target {{卷路径}} --erase- 恢复后跳过验证步骤:
bash
sudo asr restore --source {{映像名.dmg}} --target {{卷路径}} --noverify- 不使用中间磁盘映像直接复制卷中的数据:
bash
sudo asr restore --source {{卷路径}} --target {{复制卷路径}}继续阅读
- 完整实践
- 知识专题
- 知识专题