Похоже, что вы пытаетесь изменить разрешения, назначенные по умолчанию файлу при его создании.
Если это так, я думаю, что вам нужно проверить help umask
.
Параметр umask
определяет, какие разрешения назначаются файлу (или каталогу) при его создании. (Существуют и другие факторы; Я не пытаюсь дать здесь учебное пособие, только определение и отправную точку. Если вы знаете поисковый термин для использования вашего исследования может быть намного быстрее.)
Это JSON, и linux инструменты не очень хороши для работы с JSON. И ваши условия не очень ясны... Но этот perl one-liner производит из вашего примера строку "I win"
perl -0777 -nE 's/.*"(.+?)","confidence".*/$1/s; say'
-121--173898- "Простой" ответ - использовать sed
:
sed -n 's/.*\("[^"]*"\),"confidence".*/\1/p' filename
Это напечатает "I win"
.
Чтобы исключить кавычки (и получить только я выигрываю
в качестве вывода),
Переместите первые две двойные кавычки в команде за пределы скобок:
sed -n 's/.*"\([^"]*\)","confidence".*/\1/p' filename
Лучший ответ - получить инструмент, предназначенный для анализа данных JSON.
Вы можете использовать раскрытие параметров для извлечения частей строк. #
удаляет слева, %
удаляет справа, удвоение символа удаляет самое длинное совпадение.
#! /bin/bash
for f in ABCD_20181102.jpg DEDE_2_20181030.jpg ; do
suffix=${f#*.}
before_underscore=${f%%_*}
after_underscore=${f#*_}
after_underscore=${after_underscore%.$suffix}
if [[ $after_underscore = *_* ]] ; then
before2=${after_underscore%_*}
after2=${after_underscore#*_}
after_underscore="$after2"_"$before2"
fi
echo mv "$f" "$after_underscore"_"$before_underscore.$suffix"
done
Просто удалите echo
перед mv
, как только вы убедитесь, что скрипт делает то, что вам нужно.
Если у вас есть переименование Ларри Уолла, то
rename -n -e 's/.*_.*/$2_$1/' «file list»
Удалите -n
для включения, если вывод показывает, что он будет делать это правильно. (Вышеизложенное только говорит вам, что он будет делать, но не будет этого делать.)
Сmmv
:
$ mmv -n '*_*.jpg' '#2_#1.jpg'
ABCD_20181102.jpg -> 20181102_ABCD.jpg
DEDE_2_20181030.jpg -> 2_20181030_DEDE.jpg
(удалите -n
как только убедитесь, что все работает правильно ).