搞了个批量创建层级文件夹的小破工具,有需要的可以体验下~ 😀

2022-07-22 19:08:29 +08:00
 asmoker

搞了个批量创建层级文件夹的小破工具,有需要的可以体验下~ 😀

https://mkdir.threep.top/

1605 次点击
所在节点    分享创造
6 条回复
zxCoder
2022-07-22 21:47:28 +08:00
挺有意思,不过暂时没这个需求 hhh
wxf666
2022-07-22 23:08:44 +08:00
有意思,也来写个 bash 版的

1. 默认去除前面的 1.1.2 、doc.math 之类的键名
2. 允许不按顺序指定目录,如此顺序可打乱:1 、1.1 、1.2 、1.2.1 、1.2.2
3. 父目录不存在,会在另一指定地方创建:1 、1.2.1 (不存在 1.2 ,所以 1.2.1 不会在 1 之下)

#!/bin/bash

declare -a SEP=('.' ' ')
declare -r WORK_DIR='./'
declare -r DANG_DIR='./dangling/'
declare -r EXCLUDE_KEY=yes # 若要包含 1.1.2 之类的键名,设为空字符串

declare -A dict=([${SEP[0]}]=$WORK_DIR)

sed '/^$/d' <<EOF | sort |
doc.eng 英语
doc 考研资料
doc.math 数学
doc.movie 电影

2.3.1 ???
2.3.1.1 !!!
2.2.1 Beyond
2 音乐
2.2 粤语
2.1.2 张震岳
2.1.1 周杰伦
2.1 华语
EOF
while read -r path; do
   key=${SEP[0]}${path%%"${SEP[1]}"*}
   parent=${key%"${SEP[0]}"*}
   dict[$key]=${dict[${parent:-${SEP[0]}}]:-$DANG_DIR}${path#${EXCLUDE_KEY:+*${SEP[1]}}}/
   echo "${dict[$key]}"
done | tee /dev/stderr | xargs -d $'\n' mkdir

输出并创建:

./音乐 /
./音乐 /华语 /
./音乐 /华语 /周杰伦 /
./音乐 /华语 /张震岳 /
./音乐 /粤语 /
./音乐 /粤语 /Beyond/
./dangling/???/
./dangling/???/!!!/
./考研资料 /
./考研资料 /英语 /
./考研资料 /数学 /
./考研资料 /电影 /
wxf666
2022-07-23 00:52:33 +08:00
再来个 json 版的:

jq -r '
   def work($obj; $path):
     if ($obj | type) == "object" then
      $obj | to_entries[] | (
        $path + .key + "/",
         work(.value; $path + .key + "/")
      )
     elif ($obj | type) == "array" then
      ($obj[] | work(.; $path))
     else
      ($path + $obj + "/")
     end;

   work(.; "./")
' <<< '
{
  "考研资料": ["数学", "英语", "电影"],
  "音乐": {
    "华语": ["周杰伦", [[["张震岳"]]]],
    "粤语": "Beyond"
  }
}' | tee /dev/stderr | xargs -d $'\n' mkdir

输出并创建:

./考研资料 /
./考研资料 /数学 /
./考研资料 /英语 /
./考研资料 /电影 /
./音乐 /
./音乐 /华语 /
./音乐 /华语 /周杰伦 /
./音乐 /华语 /张震岳 /
./音乐 /粤语 /
./音乐 /粤语 /Beyond/
asmoker
2022-07-25 10:50:26 +08:00
@wxf666 👍👍👍👍 这个🐂 🍺
Cmei
2022-07-26 00:11:14 +08:00
能不能搞个批量创建文件夹功能,比如创建 100 个没有,以姓名 命名的 文件夹。
atshow
2022-08-01 23:25:28 +08:00
小工具不错,已经收录至我的导航站。望长期维护。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/868083

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX