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

如何用Bash将子目录中的JSON文件移动至根目录?

将子目录下的JSON文件移动到根目录(Bash实现)

问题场景

现有如下目录结构(根目录为eva):

.
├── 1061
│   └── 2022
│       └── 09
│           └── 21
│               └── a0e51f58-5057-4002-b4c4-d3fb870e9b3a.json
├── 1769
│   └── 2022
│       └── 08
│           └── 30
│               └── e36d8e21-5184-489f-89b5-eb1fd5eba5f6.json
├── 1991
│   └── 2022
│       └── 09
│           └── 16
│               └── 1d0a4162-7e66-44c8-8b61-f3bc5dbdb107.json

需要将所有.json文件移动到eva根目录,最终目录结构如下:

.
│a0e51f58-5057-4002-b4c4-d3fb870e9b3a.json
│e36d8e21-5184-489f-89b5-eb1fd5eba5f6.json
│1d0a4162-7e66-44c8-8b61-f3bc5dbdb107.json

实现方法

以下几种Bash命令均可实现需求,根据实际场景选择:

方法1:通用型(适配任意子目录深度)

先进入eva根目录,执行以下命令:

cd /path/to/eva
find . -type f -name "*.json" -exec mv {} . \;
  • 说明:find .从当前目录开始递归搜索,-type f限定仅匹配文件,-name "*.json"筛选所有JSON文件,-exec mv {} . \;将找到的每个文件移动到当前目录(即eva根目录)。

方法2:精准匹配(已知固定目录深度)

如果所有JSON文件都在数字/年份/月份/日期这4层子目录下,可直接用通配符批量移动:

cd /path/to/eva
mv */*/*/*/*.json .
  • 说明:*匹配任意非空目录或文件名,*/*/*/*/*.json精准定位到所有目标JSON文件,一次性移动到当前目录。

注意事项

  • 若存在重名JSON文件,默认mv会直接覆盖目标文件。如需避免覆盖,可添加-n参数(如mv -n {} .或mv -n */*/*/*/*.json .),遇到重名文件时会自动跳过。
  • 操作前建议先执行find . -type f -name "*.json"或ls */*/*/*/*.json确认待移动文件列表,避免误操作。

内容的提问来源于stack exchange,提问作者Marcelo Gazzola

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 15:30:51