今天早上我写了这段代码
这个想法是,文本文件(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
Test/test1/test1.txt
Test/test2/test2.txt
Test/test3/test3.txt
Test/test4/test4.txt
问题是,它执行代码,创建目录结构,但不是在最后创建它,而是创建名为test1.txt
,test2.txt
等的目录。我不知道为什么会这样正在发生。
另一个问题:对于Turbo C,C ++,有一个检查执行流程的选项吗?在Unix,Perl和shell脚本中是否有可用的东西来检查执行流程?
答案 0 :(得分:1)
脚本会创建这些目录,因为您在行mkdir -p $file
上告诉它。您必须从您的文件名中提取目录路径。标准命令是dirname
:
dir=`dirname "$file"`
mkdir -p -- "$dir"
要检查执行流程,请在脚本顶部添加set -x
。这将导致所有执行的行打印到stderr
前面带有“+”。
答案 1 :(得分:0)
你可能想尝试rsync
之类的东西