2014-03-07 59 views
0

我在/ xyz目录中。在这个/ xyz目录中,有多个学生的文件夹按字母顺序存储在他们的名字中。 所以我有一个文件value.txt,我想复制到他们的名字以A,B,C,D uptil R开头的所有文件夹中。将文件复制到多个文件夹Linux

例如,在/ xyz中我有以下目录:

/艾米

/布兰登

/查尔斯

/吉娜

/罗伯特

/麦克

/彼得

/百合

我想value.txt给谁拥有从A开头的名称至R的所有文件夹是在

/艾米

复制

/brandon

/charles

/吉娜

/罗伯特

感谢 任何帮助,将不胜感激。

+1

您需要在perl,php或shell中创建一个脚本。 – Merlevede

+0

我对此很陌生。 我可以做什么样的shell脚本来做到这一点? – user2948166

+0

http://unix.stackexchange.com/ – user2485710

回答

2
for dirname in $(ls -d [a-r]*) 
do 
    cp value.txt ${dirname}/ 
done 
+0

正则表达式模式应该是[a-R],否则大写为R. – mrcl

+0

@mrcl:'[a-R]'不是一个有效的正则表达式。看问题中的目录我就这样保留它。虽然如果需要大写,正则表达式应该是'ls -d [a-rA-R] *' – Amit

+0

是有道理的,但它绝对适用于我的bash! :d – mrcl

2

你可以这样做:

for s in [a-r]*; do cp file.text $s; done 
0

另一方面,如果再让说要排除将会使脚本更简单的字母数,那么你就可以做到以下几点:

[^YZ]* 

此[^ YZ]模式将任何字符匹配除了Y或Z - bash的手册中有更多的细节。 Read ths

0

复制以下行到一个文件例如为:cpFile2Dirs.sh

#!/bin/bash 
dList=`ls -d */` 

for d in $dList; 
do 
    if [[ $d == [a-rA-R]* ]]; 
    then 
     cp $1 $d 
    fi 

done 

应该坐在您目前正在使用的目录。

然后执行

bash cpFile2Dirs.sh value.txt 

这将文件value.txt复制到启动与/ A达R/R的所有目录,如if语句定义。你可以随意改变它。

您还可以设置执行许可到脚本

chmod +x cpFile2Dirs.sh 

那么你并不需要运行bash copyValues.sh value.txt,只是

./cpFile2Dirs.sh value.txt 

希望它能帮助。

相关问题