テキストファイルからフォルダとサブフォルダを作成する

テキストファイルからフォルダとサブフォルダを作成する

テキストファイルから新しいディレクトリを作成するシナリオがあります。

新しいディレクトリ.txt

/test/test1
/test/test1/test2

このコードを使用しましたが、test1サブフォルダが2つある傾向があります。

while IFS="" read -r p || [ -n "$p" ]
    do 
      mkdir -p "$p" &&
      chmod -R 770 "$p"
    done < newDirectory.txt

テストホームフォルダがすでに作成されているとします。 test1フォルダが2つあります。 1 つに追加の「^M」(/test/test1^M) がありますが、サブフォルダーはなく、1 つには内部にサブフォルダーがある予想フォルダー (/test/test1/test2) があります。

作成したフォルダを削除するときも、このテキストファイルを参照する必要があります。

while IFS="" read -r p || [ -n "$p" ]
    do 
      rm -rf $p
    done < newDirectory.txt

しかし、/test/test1/test2のみが削除され、/test/test1はまだ存在します。ありがとう

ベストアンサー1

テキストファイルにDOS行末(CR + LF)が含まれる可能性があることを知らせたので、UNIXの世界では次のようになります。

/test/test1^M
/test/test1/test2^M

^M使用しているエディタによっては、キャリッジリターンは表示されません。

それではどうなりますか?最初の行の場合は、後続のキャリッジリターン^Mを含むフォルダが作成され、2行目はオプションのため、後続のキャリッジリターンがないtest1フォルダが作成されます。^M-p

その後、削除するとそのtest1^Mフォルダとサブフォルダも削除されますが、test1/test2^M自動的に作成されたフォルダに対しては誰も削除を要求しませんでしたtest1

解決策:間違った行末を削除してください。dos2unixお持ちでない場合はご利用ください。

sed -i.bak 's/^M$//' newDirectory.txt

^M種類別に入力してからctrlV入力してくださいctrlM)。

ちなみに、使用時に行の中に引用することを忘れないでくださいbash"$p"rm

おすすめ記事