Почему моя команда bash имеет знак «%» вместо «$» и почему она не работает?

Я не вижу смысла использовать здесь find. Вы точно знаете, где что находится, поэтому нет необходимости искать файлы.

Вместо этого, если вы используете оболочку bash,

#!/bin/bash

shopt -s extglob dotglob

for dirpath in '/media/home/Seagate Expansion Drive/Downloads/Java Spring Gurus'/folder*/
do
    mkdir -p "$dirpath"/rest &&
    mv -i "$dirpath"/!(*.mp4|rest) "$dirpath"/rest
done

Это зациклит все ваши folder*каталоги. Для каждого такого каталога он будет создавать в нем подкаталог rest, а затем перемещать в него все, что не соответствует*.mp4(или самому каталогу rest).

Расширенный шаблон подстановки !(*.mp4|rest)будет соответствовать любому имени, не оканчивающемуся на .mp4, и не rest.

Параметры оболочки extglobпозволяют использовать расширенные шаблоны подстановок в bash, а опция оболочки dotglobпозволяет подстановкам сопоставлять скрытые имена.

0
13.01.2021, 19:22
1 ответ

Ваш "bash" на самом деле zsh. В более новых версиях macos по умолчанию используется zsh, который по умолчанию будет иметь символ %в вашем приглашении. Вы можете изменить его с помощью:

chsh -s /bin/bash
3
18.03.2021, 22:37

Теги

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