представьте метку времени файлов ДЛЯ цикла

mount -t usbfs none /proc/bus/usb 
cat /proc/bus/usb/devices

Если Вы не имеете usbfs модуль ИЛИ /proc/bus/usb каталог, затем попробуйте это

cat /sys/bus/usb/devices/*/product
3
21.03.2015, 11:11
2 ответа

Проблема не со стандартом , но с исходными данными в вашем для 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)
2
27.01.2020, 21:23

Не разбирайте вывод Ls . Вы не можете отличить новую линию, представленную LS из новой строки в имени файла. То же самое касается Найти .

Для устройств в $ (Ls / Media / * /) - это просто сложный пункт написания для устройств в / мультимедиа / * / * . Вместо для файлов в $ (найти ...); делать …; Готово , используйте Найти ... -Эксек ... .

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

find /media/*/* -iname '*.jpg' -exec stat {} +

для получения дополнительной информации, см. Почему мой скрипт Shell заслонки пробела или других специальных символов?

1
27.01.2020, 21:23

Теги

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