Следующие команды дадут мне список имен устройств ttyUSB, связанных с 19d2:0016 (который является идентификатором «модемного режима» ZTE MF831 LTE stick, ваш может отличаться.
for i in $(find -L /sys/bus/usb/devices/ -maxdepth 2 -name "ttyUSB*"); do
egrep -i "v19d2p0016(.*)in02" $i/../modalias >/dev/null && echo "/dev/${i##*/}"
done
Это будет циклическое прохождение через список файлов с именем ttyUSB*, включая символические ссылки, в /sys/bus/usb/devices. В результатах мы будем искать файл с именем modalias и искать строку, содержащую идентификатор поставщика «v» «19d2» и идентификатор продукта «p» 0016. Если выходные данные совпадают, мы будем повторять строку с префиксом «/dev/» перед USB? имя. Афаик первый или обычно последний (наибольшее число)— порт модема для устройств ZTE. Вы можете повторить результаты в файле в /tmp/ и head -n1 или tail -n1 строки соответственно. Если у вас есть концентраторы, вам, вероятно, потребуется увеличить maxdepth.
Это не самый элегантный способ, но он будет работать практически на любом варианте Linux.
Помимо основных команд оболочки, на в большинстве дистрибутивов Lunux есть хороший инструмент переименовать
, который может переименовывать несколько файлов одной командой:
rename 's/PDF/pdf/' Task1/*
Вот хорошая статья об этом: Rename - инструмент командной строки для переименования Несколько файлов в Linux .
Используйте подстановку имен файлов:
for file in Task1/*; do mv ...; done
Для точности сопоставьте только файлы, оканчивающиеся на .PDF
:
for file in Task1/*.PDF; do mv ...; done
Точнее, убедитесь, что мы имеем дело с файлами, а не с каталогами:
for file in Task1/*.PDF; do [ -f "$file" ] && mv ...; done
В качестве примечания: ваш шаблон расширения параметров в порядке.
Если переименовать
в вашем дистрибутиве - это команда C из util-linux (например, Arch Linux):
переименовать PDF pdf Task1 / * PDF
Это будет работать, если ваши файлы PDF не содержат строку «PDF» где-нибудь, кроме конца, например example_PDF_file.PDF
.