Измените все имена файлов в каталоге на цифровые значения

вы можете использовать команду no-op (ничего не делать), в оболочке это :

elif [ $Useranswer = n]; then
    : 
fi

иначе вы можно использовать команду exit , которая используется для завершения сценариев. Команда может иметь статус выхода от 0 до 255. Только exit 0 означает успех, все остальные коды состояния выхода описывают какой-то сбой (а это не то, что вам нужно). Также вы можете сделать следующее:

elif [ $Useranswer = n]; then
    exit 0
fi

Но в этом случае остальная часть скрипта не будет выполнена, потому что exit действительно завершит скрипт в этой точке, например: если пользователь нажмет «n», вы никогда не получите вывод echo «Все сделано!

1
04.10.2018, 09:57
2 ответа

Если у вас есть Perl-версия rename(, иногда называемая prename), вы можете использовать это

rename -n 's/^0*(\d+).*(\.m4a)\z/$1$2/s' [0-9]*.m4a

Когда вы будете счастливы, что он будет делать то, что вы хотите, снимите флаг -n.

Здесь используется сопоставление с регулярным выражением:

  • ^-требуется запуск -темы -
  • 0*-соответствует нулю или более "0"
  • (\d+)-соответствует и запоминает одну или несколько десятичных цифр
  • .*-сопоставить все до...
  • (\.m4a)-соответствует и запоминает литерал ".m4a"
  • \z-требуется конец -из -тема¹
  • sфлаг -убедитесь, что .соответствует любому байту (, включая новую строку, также допустимо в именах файлов)

, а затем использует $1и $2для ссылки на значение выражений в квадратных скобках.


¹ Здесь нет строгой необходимости, так как все имена файлов, передаваемые оболочкой в ​​качестве аргумента, заканчиваются на .m4a, а предыдущий .*является жадным. $также будет работать здесь, но в rename, который работает с именами файлов (, которые могут быть любой последовательностью не -0 байтов, включая новую строку ), \zпредпочтительнее, так как $соответствует в конец темы, такой как \z, но также перед возможным последним символом новой строки.

1
27.01.2020, 23:31

Как бы для

for FN in *.m4a; do mv -i "$FN" "${FN%% *}.m4a"; done

понял?

1
27.01.2020, 23:31

Теги

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