2012-01-27 98 views
1

我試圖變成一個bash腳本的Jaypal這樣回答 (see here) :bash腳本:複製多個文件(名稱相同)包含在不同的文件夾父親

#!/bin/bash 
pwd 
mkdir -v ../g 
shopt -s globstar 
for file in ./**/file.txt 
do 
    echo "will copy $file" 
    cp -v --parents "$file" ../g 
done 

但事實並非如此工作! (它只創建空文件夾g)
問題是什麼?
注意:腳本在f文件夾中

謝謝! :)

+0

[複製包含在不同的父文件夾中的許多文件(同名)]的可能的副本(http://stackoverflow.com/questions/9021931/copy-many-files-same-name-contained-in - 不同的父親文件夾) – 2012-01-27 15:19:33

+0

我創建了一個新的問題,因爲我認爲這是另一種... 在這裏,我問**如何進入一個bash腳本Jaypal **的答案是命令的命令行... 我不問**如何複製文件** ... 但是,我應該合併2個問題嗎? – fibon82 2012-01-27 16:27:47

+1

請在循環中添加腳本'pwd'(開頭)和'echo「$ file」'。然後,使用結果。我做到了。請再次運行並給出結果。 – olibre 2012-01-27 16:39:53

回答

1

回答標題問題:

source_dir=/some/dir 
target_dir=/some/other/dir 
file_name=myfile.txt 

cd $target_dir 
while read path; do 
    mkdir -p $(dirname $path) 
    cp $source_dir/$path $target_dir/$path 
done < <(cd $source_dir; find . -name $file_name -type f) 

這個複製$source_dir下發現到$tagert_dir

關於你提到的第二個問題(爲什麼你的代碼不工作)也許你沒有全部$file_name bash 4+和globstar不工作?或者它可能返回不同於文件的相對路徑(我認爲,但由於我有bash 3.2,所以我無法檢查)

0

由於對mark a comment as an answer的功能請求仍然被拒絕,因此我在此複製上述解決方案。

好的我在./*/file.txt文件中只使用了1 * in的解決方案。這樣看起來工作正常。謝謝oHessling! :) - fibon82

相關問題