Синхронизировать исполняемые файлы на основе того же пути и имени файла - PullRequest
1 голос
/ 28 февраля 2012

У меня есть эта папка:

$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 /...

Но я не могу переопределить эти файлы. Они разные по содержанию, но имеют абсолютно одинаковые имена.

Может ли кто-нибудь помочь мне создать сценарий оболочки, чтобы найти все эти исполняемые файлы, и, используя тот же путь, применить chmod +x к тому же имени файла на моем $ external_driver?

Действительно, заранее спасибо!

EDIT

Окончательное решение по ответу.

Ответы [ 2 ]

2 голосов
/ 28 февраля 2012

Один из способов сделать это ...

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 голос
/ 28 февраля 2012

Может, наконец, найти решение с помощью этого:

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

Еще раз спасибо, @Marvin и @amit_g!

...