mv複数のディレクトリを同じディレクトリに

mv複数のディレクトリを同じディレクトリに

複数のディレクトリがある場合は、2番目のディレクトリに移動したいと思います。

初期:

dmv/toto/toto0
dmv/toto1/toto1
dmv/toto2/toto2

dmv/toto0/toto00
dmv/toto2/toto02

決定的な:

dmv/toto/toto0
dmv/toto1/toto1
dmv/toto2/toto2

dmv2/toto0/toto00
dmv2/toto0/toto0
dmv2/toto2/toto02
dmv2/toto2/toto2

これを試しましたが、ディレクトリが存在することを確認しません。

~/dmv/$ for i in $(ls); do mv "${i}"/* ../dmv2/"${i}"; done

答え1

あなたの最初と最後のディレクトリリストのステップは少し秘密であるので、正確に何を求めるのかわかりません。たぶんこれはあなたに少し役に立ちます。mvDir.shたとえば、次のようにスクリプトを呼び出すと、読みやすくなります。

#!/usr/bin/bash
for file in ./*; do
    [ -d "${file}" ] && [ mkdir -p ../dmv2/"${file}" ] \
    && mv "${file}"/* ../dmv2/"${file}" 
done

確実にする:

  • 環境変数に含まれるスクリプトパスの場所PATH。 CLIで$ echo "$PATH":)を実行して確認してください。
  • スクリプトは実行可能です。 CLI で次の操作を行います。 $ chmod u+x mvDir.sh

これを実行するには、スクリプトを含むディレクトリと名前を解決するディレクトリに移動し、cliで次の操作を行います。$ ./mvDir.sh

パニックになるほど長い文章にこだわる場合は、次のようにcliで実行してください。

$ for file in ./*; do [ -d "${file}" ] && [ mkdir -p ../dmv2/"${file}" ] && mv "${file}"/* ../dmv2/"${file}"; done

これを行う他の高度な方法(例えばfind

関連情報