作業ディレクトリ配下にある全てのプロジェクトフォルダをnode_modulesフォルダを除いてまるごとコピーしたい

[前の記事](https://qiita.com/atomyah/items/5eb262295444ad2ea836)でディレクトリ構造を表示できるようになったので、それを従えてChatGPT4に表題の件を聞いてみた。

プロンプトは以下の通り。
```
Windowsの中にGitという作業用フォルダがあり、次のようなフォルダ構造になってます。
C:\Users\atyah\Git
├─ameblo_auto_iine
│  └─node_modules
│      ├─.bin
│      ├─agent-base
│      ├─async-limiter
│      ├─balanced-match
│      ├─brace-expansion
│      ├─buffer-from
│      ├─concat-map
│      ├─concat-stream
│      ├─core-util-is
│      ├─debug
│      ├─delay
│      ├─dotenv
│      ├─es6-promise
│      ├─es6-promisify
│      ├─extract-zip
│      ├─fd-slicer
│      ├─fs.realpath
│      ├─glob
│      ├─https-proxy-agent
│      ├─inflight
│      ├─inherits
│      ├─isarray
│      ├─mime
│      ├─minimatch
│      ├─minimist
│      ├─mkdirp
│      ├─ms
│      ├─once
│      ├─path-is-absolute
│      ├─pend
│      ├─process-nextick-args
│      ├─progress
│      ├─proxy-from-env
│      ├─puppeteer
│      ├─readable-stream
│      ├─rimraf
│      ├─safe-buffer
│      ├─string_decoder
│      ├─typedarray
│      ├─util-deprecate
│      ├─wrappy
│      ├─ws
│      └─yauzl
├─benzofaq（フォーラム）
├─benzoinfojapan
│  ├─.cache
│  ├─.firebase
│  ├─BIJsite_ver2.5
│  ├─node_modules
│  ├─public
│  ├─src
│  └─static
│      ├─icons
│      ├─pdf
│      ├─sound
│      └─twitterimg
├─BIJ_faq
│  ├─.firebase
│  ├─.vscode
│  ├─dist
│  ├─e2e
│  ├─functions
│  ├─node_modules
│  └─src
│      ├─app
│      ├─assets
│      └─environments
├─Codestep―学習サイト_WordPress
│  ├─HTMLCSS コーディング練習
│  └─バックアップ
├─docker-volumes
│  └─course38
├─portfolio-ポートフォリオサイト
│  ├─portfolio-web
│  ├─ダイアグラム図
│  ├─動画
│  └─画像
├─test-ナビゲーションバー（YouTubeより）
├─twitter-unfollowers
│  └─data
├─Udemy-docker
│  ├─copy
│  ├─docker-compose
│  ├─env
│  ├─mariadb
│  ├─run
│  └─test
├─UdemyーAIチャットアプリwithNext.jsとFirebase
│  └─ai-chatapp
│      ├─.firebase
│      ├─.next
│      ├─node_modules
│      ├─out
│      ├─public
│      └─src
├─UdemyーAWSフルスタック
│  └─todoApp
│      ├─client
│      └─server
├─UdemyーNext.js13とSpabaseでブログ
│  └─next.js13-tailwindcss-udemy
│      ├─.next
│      ├─public
│      └─src
├─UdemyーReact／Redux／TypeScript／Firebaseで作るアプリ
│  └─udemy-discord-clone
│      ├─.firebase
│      ├─build
│      ├─node_modules
│      ├─public
│      └─src
├─UdemyーRedux完全入門
│  ├─first-redux-app
│  └─redux-shoppingcart-app
│      ├─node_modules
│      ├─public
│      └─src
├─UdemyーTypeScript入門講座（タイパ重視）
│  └─TypeScript
│      ├─react-typescript
│      ├─Section1
│      ├─Section2
│      └─Section3
├─Udemyーちゃんと学ぶWordPress
│  ├─ｾｸｼｮﾝ3ーテーマ
│  ├─ｾｸｼｮﾝ4ーBlog
│  ├─ｾｸｼｮﾝ5ー移行
│  └─ｾｸｼｮﾝ6ーｶｽﾀﾏｲｽﾞ
├─Udemy－HTML,CSS中上級コース
│  ├─Resources_GridLayout
│  ├─Resources＿疑似要素
│  ├─Resources＿ｾｸｼｮﾝ3（ﾍｯﾀﾞｰﾎﾟｼﾞｼｮﾝ、ﾊﾝﾊﾞｰｶﾞｰﾒﾆｭｰ、ｽﾗｲﾄﾞ）
│  ├─Resources＿ｾｸｼｮﾝ4（ﾒﾃﾞｨｱｸｴﾘ）
│  ├─Resources＿ｾｸｼｮﾝ5（ﾌｸﾛｳﾍﾟｰｼﾞ完成）
│  ├─Resources＿ｾｸｼｮﾝ6～
│  └─Resources＿ｾｸｼｮﾝ8（PCｻｲｽﾞレスポンシブ）
│      ├─Sample
│      └─Training
└─Udemy－PHP２ちゃんねる掲示板

このGitフォルダを、中にあるnode_modulesフォルダと.gitフォルダのみ除外してGit_backupフォルダにコピーしたい。
どのようにコーディングすれば目的を達成できるか？Pythonでコードを書いてください。
```

返ってきたコードがこちら。
```python
import os
import shutil

def copy_directory(src, dst, ignore=None):
    if not os.path.exists(dst):
        os.makedirs(dst)
    for item in os.listdir(src):
        s = os.path.join(src, item)
        d = os.path.join(dst, item)
        if os.path.isdir(s):
            if item == 'node_modules' or item == '.git':
                continue
            copy_directory(s, d, ignore)
        else:
            if not os.path.exists(d) or os.stat(s).st_mtime - os.stat(d).st_mtime > 1:
                print(f'Copying {s} to {d}')  # コピー中のファイルを表示
                shutil.copy2(s, d)

src_folder = 'Git'  # コピー元のディレクトリ
dst_folder = 'Git_backup'  # コピー先のディレクトリ

copy_directory(src_folder, dst_folder)
```

実行してみたが完璧。

ChatGPTの出現でプログラミングのハードルは確実に下がりました…:scream: