2012-02-28 22 views
1

上同步的可執行文件,我有這個文件夾:基於相同的路徑和文件名

$HOME/folder_a -| 
       - folder_b -| 
          - executable_1 
          - ordinary_file 
       -folder_c -| 
          - executable_2 
          - another_ordinary_file 

而且我有這個相同的結構和folder_a文件到另一個地方($external_driver/folder_a

什麼是我的問題:我的$HOME/folder_a可執行文件(chmod +x)是不可執行的在我的$ external_driver/...

但我不能覆蓋這個文件。它們的內容不同,但名稱完全相同。

有沒有人可以幫助我構建一個shell腳本來查找所有這些可執行文件,並使用相同的路徑,將chmod +x應用於我的$ external_driver上相同的文件名?

真的在此先感謝!

編輯:在回答

最終的解決方案。

+0

你必須表現出一點誠意,至少_attempt_自己編寫腳本。我們不是在這裏爲你做你的工作:) – 2012-02-28 00:28:34

+0

我說要幫助我,因爲我不知道甚至開始這個惡魔腳本。但我正確地試圖去做。謝謝@Marvin – 2012-02-28 00:31:31

回答

2

一種方式來做到這一點...

cd $HOME/folder_a 
find . -executable | sed 's/^./\/Path\/To\/Other\/Dir/' 

檢查輸出。再次

for exec_file in $(find . -type f -executable); do 
    echo $exec_file | sed 's/^./..\/test2/' | xargs chmod +x; 
    fi; 
done 

感謝,@Marvin和@amit_g:如果是正確的改變

cd $HOME/folder_a 
find . -executable | sed 's/^./\/Path\/To\/Other\/Dir/' | xargs chmod +x 
+0

謝謝@amit_g,我將在最終解決方案中使用sed和xargs這個技巧。已經更新了我的問題。謝謝! – 2012-02-28 00:42:41

1

終於可以找到一個解決方案!

+0

您不必檢查目錄,但如果您確實想要,可以在查找本身中對其進行過濾。使用find - type f。 – 2012-02-28 01:12:10

+0

謝謝,我更新了它。 – 2012-02-28 02:06:59

相關問題