Это на самом деле довольно сложная проблема, как указано.
Под «исполняемым файлом» вы должны понимать что-то иное, чем --x-------
разрешения - исполняемый бит устанавливается в файловом режиме. Я думаю, что вы имеете в виду: это скомпилированное изображение или сценарий оболочки или Java-байт-код и т.д.
Для этого вы должны использовать команду file, которая интерпретирует "магию" в начале файла: например, #!/bin/bash
в самом начале файла сценария оболочки. Хорошая часть этого файла Solaris дает замечательные ответы - если вы человек. Он предоставляет много разных ответов.
Если вы программа, удачи. Обычный файл "data" может содержать такие слова, как "текст ASCII", "файл данных" и т.д. IMO, что вам нужно сделать, это получить уникальный список "типов" файлов, прежде чем пытаться использовать find, чтобы дифференцировать то, что вы хотите. Вы можете составить список с помощью команды find и awk.
cd /path/to/start/directory
find . -type f -exec /usr/bin/file {} \; | awk '!arr[$0]++' > /tmp/mylist
/tmp/mylist - это уникальный список этих "типов файлов". Следующий шаг - человек должен будет решить, какие записи в /tmp/my соответствуют определению исполняемого файла, и получить или переместить остальные в "обычную" кучу. Я пробовал это в прошлом, так что выделите время для этого.
Обновите свой пост здесь с дополнительной информацией, когда вы его получите. В зависимости от того, что вы получаете, кто-то может показать вам, что делать дальше.