ファイルの検索、サブディレクトリの作成と移動

ファイルの検索、サブディレクトリの作成と移動

次のディレクトリツリーがあります。

Comb
|
|--- 1.json2
|--- 1.cc.json2.ml
|--- 102.cc.json2.pre2.ml
|--- 1.json2.pre1
|--- 102.json2.pre1

この結果を得るにはcreateとbashが必要です。

Comb
|--|
   |-1
   |  |--- 1.json2
   |  |--- 1.cc.json2.ml
   |  |--- 1.json2.pre1
   |- 102
       |--- 102.cc.json2.pre2.ml    
       |--- 102.json2.pre1  

同様のことを試しましたが、ある時点でファイルが壊れたり失われたりしました。

for file in *.cc.json2.pre2.ml; do mkdir -- "${file%.cc.json2.pre2.ml}"; mv -- "$file" "${file%.cc.json2.pre2.ml}"; done

for file in *.cc.json2.pre1.ml; do mkdir -- "${file%.cc.json2.pre1.ml}"; mv -- "$file" "${file%.cc.json2.pre1.ml}"; done

ベストアンサー1

次のシェルスクリプトは、あなたの質問に示されているディレクトリツリーに対して機能するはずです。

#!/bin/bash

for i in *.*
do
 if test -e "$i"
 then
  tmp="${i%%.*}"
  mkdir -p "$tmp"
  mv -i "$i" "$tmp"
 else
  echo "No file or directory matching '$i'"
 fi
done
  • cdディレクトリを入力するには、「ディレクトリの変更」を選択します。

  • シェルスクリプトを作成します。

  • 名前をつけてポイントがない、例えばshellscript(自分で動かしたくないので)

  • シェルスクリプトの実行

    bash shellscript
    
  • ディレクトリツリーの上部に新しいファイルを作成してシェルスクリプトを再実行したい場合は、「実行可能にする」をお勧めします。

    chmod +x shellscript
    

    その後、「直接」実行できます。

    ./shellscript
    

おすすめ記事