You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在macOS终端使用gshuf或Python随机打乱文件夹内文件?

报错原因说明

gshuf的设计逻辑是接收文本内容或者单个文件作为输入,不能直接读取目录。你直接执行无参数的gshuf时,程序会等待标准输入流输入内容,所以会出现无响应的情况;直接传入文件夹路径时,程序无法读取目录内容,就会抛出Is a directory的错误。

用gshuf实现文件顺序打乱的正确方法
  • 先确保已经通过Homebrew安装coreutils,未安装可执行:brew install coreutils
  • 进入目标文件夹后,执行以下命令即可输出打乱后的文件列表:
    ls | gshuf
  • 如果需要将打乱后的列表保存到本地文件,追加重定向即可:
    ls | gshuf > 打乱后的文件列表.txt
  • 如果需要让文件在Finder中展示的顺序也被打乱,可以通过添加随机数字前缀重命名实现,执行前可以先去掉末尾的| bash预览生成的命令,确认无误后再执行:
    ls | gshuf | awk 'BEGIN{count=1}{printf "mv \"%s\" %04d_%s\n", $0, count++, $0}' | bash
    注意:重命名操作不可逆,操作前请务必备份重要文件
用Python实现相同需求

可以直接在终端调用系统自带Python完成操作,无需安装额外依赖:

  • 仅输出打乱后的文件列表,执行:
    python3 -c "import os, random; files = [f for f in os.listdir('.') if os.path.isfile(f)]; random.shuffle(files); print('\n'.join(files))"
  • 要实现重命名打乱Finder展示顺序,同样建议先注释掉os.rename行预览结果后再执行:
    python3 -c "import os, random; files = [f for f in os.listdir('.') if os.path.isfile(f)]; random.shuffle(files); for i, f in enumerate(files, 1): os.rename(f, f'{i:04d}_{f}')"
    注意:重命名前请备份文件避免数据损失

内容的提问来源于stack exchange,提问作者Yogesh Riyat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 02:09:02