Я могу использовать подстановочные знаки для выбора определенных типов файлов их расширениями, например.
mv *.cc src/
Как выбрать исполняемые файлы, которые не имеют расширения?
Это проверяет исполняемый бит и переместит все файлы в каталог, в котором Вы находитесь в src/
.
find . -maxdepth 1 -type f -perm +a=x -print0 | xargs -0 -I {} mv {} src/
Это не проверяет то, что имя файла (так xxxx и xxxx.cc, и что-либо еще перемещено, пока это - "файл" (-type f
) "x" (выполняются), разрешение установлено (-perm +a=x
)).
Шарики удара AFAIK не поддерживают это - но zsh делает через его спецификаторы шарика.
Например, спецификатор для исполняемых простых файлов (скорее смутно) *
например.
ls -l *(*)
перечислит исполняемые двоичные файлы и сценарии. Это еще не обеспечивает спецификатор для двоичных файлов явно, однако это действительно позволяет Вам определять свое собственное, как описано в zsh спецификаторе шарика для исключения двоичных файлов так, например, Вы могли сделать
mv -- *(*e:'file --brief --mime $REPLY | grep -q binary':) exec/
или определите функцию помощника
binary() { file --brief --mime $REPLY | grep -q binary }
затем
mv -- *(*+binary) exec/
(Я добавил --brief
предотвратить возможные ложные соответствия на имени файла.)