親ディレクトリの各ファイルのディレクトリを作成する方法

親ディレクトリの各ファイルのディレクトリを作成する方法

親フォルダがあり、このフォルダには4つのファイルがあります。

ParentFolder
      File1.txt
      File2.txt
      File3.txt
      File4.txt

親フォルダ内のファイル名でサブフォルダを作成し、次の名前で各ファイルをフォルダ内に移動したいと思います。

ParentFolder
    File1          
      File1.txt
    File2          
      File2.txt
    File3          
      File3.txt
    File4          
      File4.txt

バッチスクリプトまたはtschスクリプトでこれをどのように実行できますか?私は次のスクリプトを試しました。

#!/bin/bash
in=path_to_my_parentFolder
for i in $(cat ${in}/all.txt); do
cd ${in}/${i} 
ls > files.txt
for ii in $(cat files.txt); do
mkdir ${ii}
mv ${ii} ${in}/${i}/${ii} 
done     
done

ベストアンサー1

あなたはこれをとても複雑にしています。あなたが何をしたいのかわかりませんall.txt。ディレクトリ内のファイルを列挙するには呼び出さないでくださいls。これはより複雑です。とにかく安定して動作しません。使うワイルドカードパターン

.txtファイル名の末尾の拡張子()を削除するには、サフィックス削除機能を使用します。変数の置換変数の置換には常に二重引用符を使用してください。

cd ParentFolder
for x in ./*.txt; do
  mkdir "${x%.*}" && mv "$x" "${x%.*}"
done

おすすめ記事