複数のディレクトリがある場合は、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
。