我试图弄清楚脚本中的多个 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是这里的目录)