执行一段指令如下:复制一个文件夹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版本是一致的。这个情况怎么破?
1
czheo 2015-05-18 15:44:06 +08:00
ls后面加-l
|
2
sisyphus60 OP @czheo 为什么会这样呢?
|
3
czheo 2015-05-18 18:40:54 +08:00
你在开发机上输入type ls看看,有提示
|
4
extreme 2015-05-18 23:58:59 +08:00
我觉得奇怪,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 |
5
sisyphus60 OP @extreme 已经搞定,多谢。
|