mount -t usbfs none /proc/bus/usb
cat /proc/bus/usb/devices
Если Вы не имеете usbfs
модуль ИЛИ /proc/bus/usb
каталог, затем попробуйте это
cat /sys/bus/usb/devices/*/product
Проблема не со стандартом
, но с исходными данными в вашем для LOOP
; Потому что вы вложили все это в цитатах, это становится одной длинной единой сущностью.
Чтобы исправить это, удалите вокруг него цитаты, таким образом:
for files in $(find /media/*/$devices -iname "*.jpg");
работает при условии, что ни один из файлов или путей не имеет пробелов. Но есть более элегантное решение, которое работает с пробелами и даже со странными именами имена (например, которые включают в себя цитаты или новойнойны):
while IFS= read -r -d '' file; do
# operations on each "$file" here
done < <(find /media/*/$devices -type f -iname *.jpg -print0)
Не разбирайте вывод Ls
. Вы не можете отличить новую линию, представленную LS
из новой строки в имени файла. То же самое касается Найти
.
Для устройств в $ (Ls / Media / * /)
- это просто сложный пункт написания для устройств в / мультимедиа / * / *
. Вместо для файлов в $ (найти ...); делать …; Готово
, используйте Найти ... -Эксек ...
.
Вам не нужны две петли здесь, так как вы перечисляете только файлы, чтобы использовать полный набор позже. Ваш скрипт просто
find /media/*/* -iname '*.jpg' -exec stat {} +
для получения дополнительной информации, см. Почему мой скрипт Shell заслонки пробела или других специальных символов?