我试图将文件复制到目录中的一堆文件夹.文件夹已保存,propagation.txt
如下所示:
sfproject/folder1
sfproject/folder2
Run Code Online (Sandbox Code Playgroud)
我试图运行的代码是:
for x in `cat propagation.txt`
do cp php.ini $x ; echo "Copied php.ini to $x"
done
echo "Finished";
Run Code Online (Sandbox Code Playgroud)
但是,它指出:
cp : 'target: 'propagation.txt' is not a text'
Run Code Online (Sandbox Code Playgroud)
这就是propagation.txt包含:
sfproject/apps/backend/modules/users/lib
sfproject/apps/backend/templates
sfproject/apps/frontend/config
sfproject/apps/frontend/lib
sfproject/apps/frontend/modules/EdboostSatGuide/actions
sfproject/apps/frontend/modules/EdboostSatGuide/templates
sfproject/apps/frontend/modules/dashboard/actions
sfproject/apps/frontend/modules/dashboard/templates
sfproject/apps/frontend/modules/quizzes/actions
sfproject/apps/frontend/modules/quizzes/templates
sfproject/apps/frontend/templates
sfproject/cache/frontend/prod/config
Run Code Online (Sandbox Code Playgroud)
"目标不是目录"是一个cp
错误.当你有三个或更多参数时会发生这种情况,最后一个参数是一个不是目录的现有文件系统对象!
当然
cp ab
如果b
是常规文件,则工作,而不是目录.b
简单地替换为a
.但
cp abc
意味着使一个副本a
和b
目录里面c
.
目前还不清楚这个问题是如何发生的cp php.ini $x
,因为循环变量$x
正在迭代cat ...
过程替换的结果.过程替换经历了单词拆分,并且拆分件被x
逐个分配.为了cp
最终得到三个或更多的参数,$x
必须以某种方式扩展为两个参数.
发布失败的实际逐字代码和一些示例数据.
在相关的说明中,如果在某些路径名中确实有空格,最好将它们放在单独的行中propagation.txt
,然后像这样处理它:
# read dir names one by one and copy php.ini into them ...
while read dir ; do
cp php.ini "$dir"
# ...
done < propagation.txt # ... getting the names from propagation.txt
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
16271 次 |
最近记录: |