脚本中的多个 mv 命令

脚本中的多个 mv 命令

我试图弄清楚脚本中的多个 mv commnads 如何工作。我有一个包含日志、结果和 tmp 文件夹的文件夹。这也是我使用以下命令编写 shell 脚本(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 个文件夹,内容位于 1 个文件夹上。

我不确定我缺少什么,或者为什么第一个 mv 命令的工作方式与第二个和第三个命令不同。

答案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是这里的目录)

相关内容