スクリプト内の複数のmvコマンド

スクリプト内の複数のmvコマンド

スクリプトで複数のmvコマンドがどのように機能するかを調べようとしています。ログ、結果、tmpフォルダを含むフォルダがあります。これは私が次のようにシェルスクリプト(make_move.csh)を書いた場所でもあります。

#!/bin/csh -f
set DN=$1
#mkdir FOLDER1/$DN
mv ./log ./FOLDER1/$DN
mv ./result ./FOLDER1/$DN
mv ./tmp ./FOLDER1/$DN

このスクリプトを実行すると

csh make_move.csh 50_1000error

「log」の内容がFOLDER1/50_1000errorにコピーされ、resultフォルダとtmpフォルダ全体がコピーされることがわかります。 FOLDER1/50_1000errorには、2つではなく3つのフォルダがあり、1つのフォルダにコンテンツがあるようにすることが目的です。

私が何を見逃しているのか、なぜ最初のmvコマンドが2番目と3番目のコマンドとは異なる動作をするのかわかりません。

ベストアンサー1

空のディレクトリの場合、あいまいさを避けるために、コンテンツをターゲットディレクトリに移動するようにmvに明示的に指示できます。また、必要なすべてのディレクトリを再帰的に作成する必要があります。

#!/bin/bash
mkdir -p FOLDER1/$1
mv -t ./FOLDER1/$1/ ./a
mv -t ./FOLDER1/$1/ ./b
mv -t ./FOLDER1/$1/ ./c

正しく変換されます

1& [planetmaker:~/test] $ ls
a  b  c  script.sh

到着

1& [planetmaker:~/test] $ ./scritp.sh blubber
1& [planetmaker:~/test] $ ls
FOLDER1  script.sh
1& [planetmaker:~/test] $ ls FOLDER1/blubber
a  b  c

(a、b、cはここでディレクトリです)

おすすめ記事