Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 复制文件夹';将子项添加到多个文件夹_Shell_Unix - Fatal编程技术网

Shell 复制文件夹';将子项添加到多个文件夹

Shell 复制文件夹';将子项添加到多个文件夹,shell,unix,Shell,Unix,是否存在将文件夹中的所有子元素复制到其他多个文件夹的sh脚本。我的想法是这样的。将复制下面的文件夹 /Parent/ChildDir1 /Parent/ChildDir2 /Parent/ChildFile1 /Parent/ChildFile2 目的地是这样的 /X/a/ /X/b/ /X/c/ 覆盖是必要的 谢谢据我所知,您想将/Parent/中的所有内容复制到多个目标文件夹中吗?因此,/X/a/、/X/b/和/X/c/都有各自独立的副本。在这种情况下,您可以像这样在所有目的地上循环:

是否存在将文件夹中的所有子元素复制到其他多个文件夹的sh脚本。我的想法是这样的。将复制下面的文件夹

/Parent/ChildDir1
/Parent/ChildDir2
/Parent/ChildFile1
/Parent/ChildFile2
目的地是这样的

/X/a/
/X/b/
/X/c/
覆盖是必要的


谢谢

据我所知,您想将
/Parent/
中的所有内容复制到多个目标文件夹中吗?因此,
/X/a/
/X/b/
/X/c/
都有各自独立的副本。在这种情况下,您可以像这样在所有目的地上循环:

DESTS = "/X/a/:/X/b/:/X/c/:"
SRC = "/Parent/"
while read -d: ddir; do 
    cp -r "$SRC" "$ddir"
done <<< $DESTS
while IFS= read -r dir
do
    cp -r /path/to/Parent "$dir"
done < dirs.txt
DESTS=“/X/a/:/X/b/:/X/c/:”
SRC=“/Parent/”
在读取时-d:ddir;做
cp-r“$SRC”“$ddir”

完成您可以使用
find
查找
X
中的所有目录,即X/a、X/b、X/c等,然后递归地将源目录复制到其中:

find /path/to/X -type d -maxdepth 1 -exec cp -r /path/to/Parent {} \;
如果目录列表位于文件中,则可以读取文件中的每一行并执行
cp
,如下所示:

DESTS = "/X/a/:/X/b/:/X/c/:"
SRC = "/Parent/"
while read -d: ddir; do 
    cp -r "$SRC" "$ddir"
done <<< $DESTS
while IFS= read -r dir
do
    cp -r /path/to/Parent "$dir"
done < dirs.txt
而IFS=read-r dir
做
cp-r/path/to/Parent“$dir”
完成
哪个外壳?目标目录是否已经存在?请您澄清应该放在哪里?也就是说,
/Parent/ChildDir1=>/X/a
/Parent/ChildDir2=>/X/b
或者你指的是其他映射吗?所有的孩子都将转到shell脚本中的每个/X/*/directory使用“cp”命令来执行所需的操作。请参阅帮助页以了解“cp”的详细信息,即“man cp”,看起来不错,但有应用程序。800个目标文件夹。定义目的地时可以使用通配符吗?可以,可以使用通配符生成
DESTS
变量。例如,如果希望
/X/
的所有子目录都以
a
开头:
DESTS=$(find/X/-maxdepth 1-type d-name'a*'-exec echo-n{}:\;)
。(可能有一种更简单的方法,这是我的想法)好的,但现在我意识到有些文件夹我不想复制内容。是否可以从类似文件夹的文件中读取文件夹路径。txt@skuul是的,我已经更新了我的答案,从文件中读取目录。