подстановочные знаки для исполняемых файлов (двоичные файлы)

Я могу использовать подстановочные знаки для выбора определенных типов файлов по их расширениям, например

mv *.cc src/

Как выбрать исполняемые файлы, которые не имеют расширения?

1
задан 1 March 2018 в 19:40

6 ответов

Это проверяет исполняемый бит и перемещает все файлы в каталоге, в котором вы находитесь, 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)).

3
ответ дан 22 May 2018 в 12:49
  • 1
    Я думаю, вам нужно разместить " и " между (является «файлом») и (устанавливается разрешение «x» (eXecute)), – Viesturs 1 March 2018 в 20:02
  • 2
    В find есть флаг -executable, и мы можем сохранить xargs с find . -type f -executable -exec mv -t src/ {} + – PerlDuck 1 March 2018 в 20:22

Это проверяет исполняемый бит и перемещает все файлы в каталоге, в котором вы находитесь, 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)).

3
ответ дан 17 July 2018 в 19:44

Это проверяет исполняемый бит и перемещает все файлы в каталоге, в котором вы находитесь, 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)).

3
ответ дан 23 July 2018 в 20:29

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, чтобы предотвратить возможные ложные совпадения имени файла.)

1
ответ дан 22 May 2018 в 12:49

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, чтобы предотвратить возможные ложные совпадения имени файла.)

1
ответ дан 17 July 2018 в 19:44

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, чтобы предотвратить возможные ложные совпадения имени файла.)

1
ответ дан 23 July 2018 в 20:29

Другие вопросы по тегам:

Похожие вопросы: