2014-03-07 57 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 

希望它能幫助。

相關問題