执行一段指令如下:复制一个文件夹A下所有的文件(不要文件夹),碰巧A下有一个文件夹名字为cache,有一个文件名字叫cache.img。在服务器上测试工作正常,在搭建的Hudson环境中运行该指令不行,遇到cache文件时会报错:omitting directory
ls $dir|grep -v "^d"|grep -v "zip$"|while read i
do
cp $dir/$i $dest/$container
done
请问这是什么节奏,我查看Hudson中bash的版本和服务的bash版本是一致的。这个情况怎么破?
ls后面加-l
为什么会这样呢?
你在开发机上输入type ls看看,有提示
我觉得奇怪,ls只显示文件名吧,后面的过滤根本不起作用。
cp不带-a复制带内容的文件夹就会出现那个提示,也就是跳过该文件夹,不处理。
试试这个:
OLD_PATH="被复制的文件所在的文件夹"
NEW_PATH="复制到的文件夹"
for i in $(find ${OLD_PATH} -type f -maxdepth 1)
do
cp ${i} ${NEW_PATH} && echo "Copy ${i} to ${NEW_PATH} successfully." || echo "Copy ${i} to ${NEW_PATH} unsuccessfully."
done
已经搞定,多谢。