OS X13;一連のxファイルブロックを一連のディレクトリに同時に移動する方法

OS X13;一連のxファイルブロックを一連のディレクトリに同時に移動する方法

次のファイルのリストがあります。

260704       96 -rw-r--r--    1 MacStudio      staff               47131 Jul 28 20:18 ./GSM7673474_30_CC0022.barcodes.tsv.gz
260705     6264 -rw-r--r--    1 MacStudio      staff             3206621 Jul 28 20:18 ./GSM7673474_30_CC0022.features.tsv.gz
260706   592096 -rw-r--r--    1 MacStudio      staff            303149616 Jul 28 20:18 ./GSM7673474_30_CC0022.matrix.mtx.gz
260707       88 -rw-r--r--    1 MacStudio      staff               44397 Jul 28 20:18 ./GSM7673475_31_CC0022.barcodes.tsv.gz
260708     5800 -rw-r--r--    1 MacStudio      staff             2967665 Jul 28 20:18 ./GSM7673475_31_CC0022.features.tsv.gz
260709   481960 -rw-r--r--    1 MacStudio      staff            246761628 Jul 28 20:18 ./GSM7673475_31_CC0022.matrix.mtx.gz
260710       80 -rw-r--r--    1 MacStudio      staff               38322 Jul 28 20:18 ./GSM7673476_32_CC0022.barcodes.tsv.gz
260711     6104 -rw-r--r--    1 MacStudio      staff             3123868 Jul 28 20:18 ./GSM7673476_32_CC0022.features.tsv.gz
260712   430808 -rw-r--r--    1 MacStudio      staff            220569913 Jul 28 20:19 ./GSM7673476_32_CC0022.matrix.mtx.gz
260713       80 -rw-r--r--    1 MacStudio      staff               38152 Jul 28 20:19 ./GSM7673477_33_CC0053.barcodes.tsv.gz
260714     6160 -rw-r--r--    1 MacStudio      staff             3152423 Jul 28 20:19 ./GSM7673477_33_CC0053.features.tsv.gz
260715   404888 -rw-r--r--    1 MacStudio      staff            207300291 Jul 28 20:19 ./GSM7673477_33_CC0053.matrix.mtx.gz

これらのファイルを名前が一致するディレクトリに移動したいと思います。以下のように「GSM7673474_3x」と一致するディレクトリを作成しました。

drwxr-xr-x@ 2 MacStudio  staff  64 Nov 10 18:36 GSM7673474_30/
drwxr-xr-x@ 2 MacStudio  staff  64 Nov 10 18:37 GSM7673475_31/
drwxr-xr-x@ 2 MacStudio  staff  64 Nov 10 18:37 GSM7673476_32/
drwxr-xr-x@ 2 MacStudio  staff  64 Nov 10 18:38 GSM7673477_33/

Kusalanandaの回答に基づいてパターンマッチに基づいてファイルを移動するファイルを名前が一致するディレクトリに移動するために、次のスクリプトを考えました。

find . -maxdepth 1 -type d |rg -o "GSM\d+.*" > dir.name

for i in $(cat dir.name) ; do echo $i;for filename in ./*"$i"* ;do mv -i "$filename"/ $i ;done ;done

これはmv警告でうまく機能しますが、3つのファイルのそれぞれを順番にディレクトリにmvする方法を探しています。たとえば、次のファイルは

GSM7673474_30_CC0022.barcodes.tsv.gz
GSM7673474_30_CC0022.features.tsv.gz
GSM7673474_30_CC0022.matrix.mtx.gz

GSM7673474_30そのディレクトリと次の3つのファイルセットにあります。

GSM7673474_31_CC0022.barcodes.tsv.gz
GSM7673474_31_CC0022.features.tsv.gz
GSM7673474_31_CC0022.matrix.mtx.gz

次のディレクトリにGSM7673474_31等。

把握するのは本当に難しいことを経験しているので、これについてのコメントをお寄せいただきありがとうございます。

私のシステム

                  'c.          MacStudio.local
                 ,xNMM.          -----------------------------
               .OMMMMo           OS: macOS 13.6 22G120 x86_64
               OMMM0,            Host: Mac13,2
     .;loddo:' loolloddol;.      Kernel: 22.6.0
   cKMMMMMMMMMMNWMMMMMMMMMM0:    Uptime: 10 hours, 53 mins
 .KMMMMMMMMMMMMMMMMMMMMMMMWd.    Packages: 240 (brew)
 XMMMMMMMMMMMMMMMMMMMMMMMX.      Shell: zsh 5.9
;MMMMMMMMMMMMMMMMMMMMMMMM:       Resolution: 2048x858
:MMMMMMMMMMMMMMMMMMMMMMMM:       DE: Aqua
.MMMMMMMMMMMMMMMMMMMMMMMMX.      WM: Quartz Compositor
 kMMMMMMMMMMMMMMMMMMMMMMMMWd.    WM Theme: Blue (Light)
 .XMMMMMMMMMMMMMMMMMMMMMMMMMMk   Terminal: iTerm2
  .XMMMMMMMMMMMMMMMMMMMMMMMMK.   Terminal Font: Monaco 10
    kMMMMMMMMMMMMMMMMMMMMMMd     CPU: Apple M1 Ultra
     ;KMMMMMMMWXXWMMMMMMMk.      GPU: Apple M1 Ultra
       .cooc,.    .,coo:.        Memory: 3475MiB / 131072MiB

答え1

ただ問題だと思います。

autoload -Uz zmv
zmv '(GSM<->_<->)_*' '$1/$f'

関連情報