我有一个目录结构
Dir_1
Dir_2
Dir_3
Source
。目录Source
包含文件File_1.txt
和File_2.txt
。
我想将目录Source
中的所有文件复制到所有剩余目录,在本例中为Dir_1
,Dir_2
和Dir_3
。
为此,我使用了
for i in $(ls -d */ | grep -v 'Source'); do echo $i | xargs -n 1 cp ./Source/*; done
。但是,我继续收到消息
cp: target ‘5’ is not a directory
似乎cp
在其中包含空格的目录名称存在问题。我如何解决这个问题(显然,保留目录名称中的空格)?
答案 0 :(得分:2)
使用find
你可以这样做:
find . -mindepth 1 -maxdepth 1 -type d ! -name Source -exec cp Source/*.txt {} \;
此命令在当前目录中搜索一级深度的所有子目录,不包括Source
,然后将文本文件复制到每个子目录中。
希望这会有所帮助:)