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