Shell脚本更新文件夹的内容 - 2

时间:2010-08-12 07:08:21

标签: shell

今天早上我写了这段代码 这个想法是,文本文件(new.txt)具有目录结构和目录中文件的详细信息 读取new.txt,在目标目录(此处为/tmp)创建相同的目录结构,将源文件复制到相应的目标目录。

脚本

clear    
DEST_DIR=/tmp    
for file in 'cat new.txt'    
do    
   mkdir -p $file    
   touch $file    
   echo 'ls -ltr $file'    
   cp -rf $file $DEST_DIR    
   find . -name $file -type f    
   cp $file $DEST_DIR    
done    

new.txt的内容

Test/test1/test1.txt    
Test/test2/test2.txt    
Test/test3/test3.txt    
Test/test4/test4.txt    

问题是,它执行代码,创建目录结构,但不是在最后创建它,而是创建名为test1.txttest2.txt等的目录。我不知道为什么会这样正在发生。


另一个问题:对于Turbo C,C ++,有一个检查执行流程的选项吗?在Unix,Perl和shell脚本中是否有可用的东西来检查执行流程?

2 个答案:

答案 0 :(得分:1)

脚本会创建这些目录,因为您在行mkdir -p $file上告诉它。您必须从您的文件名中提取目录路径。标准命令是dirname

dir=`dirname "$file"`
mkdir -p -- "$dir"

要检查执行流程,请在脚本顶部添加set -x。这将导致所有执行的行打印到stderr前面带有“+”。

答案 1 :(得分:0)

你可能想尝试rsync

之类的东西