基于相同的路径和文件名同步可执行文件

时间:2012-02-28 00:24:24

标签: shell synchronization executable

我有这个文件夹:

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

我将folder_a的相同结构和文件放到另一个地方($external_driver/folder_a

我的问题是什么:chmod +x上的可执行文件($HOME/folder_a)在$ external_driver /...中不可执行。

但我不能覆盖这些文件。它们的内容不同,但名称完全相同。

有没有人可以帮我构建一个shell脚本来找到所有这些可执行文件,并使用相同的路径,将chmod +x应用到我的$ external_driver上的相同文件名中?

提前非常感谢!

修改

答案的最终解决方案。

2 个答案:

答案 0 :(得分:2)

一种方法......

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

检查输出。如果正确,请将其更改为

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

答案 1 :(得分:1)

最终可以找到解决方案:

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

再次感谢@Marvin和@amit_g!