Пакетное задание для создания текстового файла для файлов ролика

Я хотел бы сохранить название фильма прежде, чем переименовать их. Это может быть сделано для всех файлов в папке в?

Таким образом с текущего имени фильма "Заводной апельсин _ (1971) Stanley Kubrick (DivX).avi", сценарий назовет текстовый файл для "Заводного апельсина _ (1971) Stanley Kubrick (DivX)" и поместит полное имя; "Заводной апельсин _ (1971) Stanley Kubrick (DivX).avi", в новом файле...

Объясните шаг за шагом.

0
задан 15 May 2017 в 14:22

1 ответ

Сделанные Steeldriver побеждают меня к нему, и более изящно. Я не собираюсь быть в его классе в течение десятилетия, по крайней мере. Но так как я уже записал и протестировал это, я отправлю его, FWIW. Следующий код должен быть помещен в сценарий. Затем Вы запускаете скрипт в терминале с единственным аргументом, являющимся каталогом, содержащим файлы, с которыми Вы хотите иметь дело. Если бы Вы хотели выполнить его от gui файлового браузера, то необходимо было бы вызвать его с чем-то как xterm -e /path/to/this_script.sh $f, f являющийся любой переменной, файловый браузер передает/path/to/directory как.

Так открывают файл простого текста с редактором, чем-то как geany, leafpad, или (дрожь) gedit.

Копия код ниже в него, начиная с "#!/bin/bash две строки ниже этого.

##### НЕ копируют эту строку, запускаются со следующей строки, начинающейся "#!"

#!/bin/bash

# repeats until you enter a valid directory
# you might add a test to make sure you have adequate permissions.
DIr="$1"
while [ ! -d "$DIr" ] || [ $DIr = / ]; do
      read -p "$DIr is not a valid argument. Enter a 
      directory other than '/' with files you want to process:" DIr
done

# canonicalizes directory name
DIr="$(readlink -f "$DIr")"

for FILE in $DIr/*; do
    BASENAMe="$(basename "$FILE")"
    BASE_NAME_minus_ext="$(echo -n "$BASENAMe" | rev | cut -d'.' -f2- | rev)"

    # If you want 'em all in a single list, instead use:
    # echo "$BASENAMe" >> "$DIr/List_of_names_minus_extensions"
    echo "$BASENAMe" > "$DIr"/"$BASE_NAME_minus_ext"

done

##### НЕ копируют эту строку. Копия через и включая "сделанный" чуть выше. Не больше.

Сохранили файл с удобным именем, как "list.sh", без меток кавычки. Переместите его в один из каталогов в Вашем пути. Можно отобразить путь с командой:

echo $PATH

, Который возвратит строку, которая является набором каталогов, разделенных двоеточиями (":" символ). Отдельные имена каталогов все начинают" / ". Они НЕ включают ":". Любой из тех каталогов сделает. Если бы это находится в Вашем пути, я предполагаю, что самый стандартный был бы:

/usr/local/bin

, но это действительно не имеет значения, пока это - один из них. Если Вы сделали это с браузером графических файлов (как Наутилус, Thunar или Pcmamfm), щелкните правой кнопкой по сценарию (т.е. файл, который Вы просто создали и переместили), и щелчок "свойства" и затем "полномочия", если это - отдельная вкладка. Установите его как исполняемый файл Вами. Все виды способов сделать это. Самый удобный должен установить, как принадлежится Вашему имени пользователя и группе того же имени и проверить исполняемый файл, читаемый и перезаписываемый владельцем и группой, но ни одним из тех, которые другим.

, Если Вы делаете это из командной строки:

chmod -v ug+r+w+x /usr/local/bin/list.sh 

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

Или, если это перестало работать, делают эти 2, по одному, в порядке:

sudo chown your_user_name:your_user_name /usr/local/bin/list.sh
sudo chmod -v ug+r+w+x /usr/local/bin/list.sh 

Теперь у Вас должен быть исполняемый сценарий, который может быть вызван путем ввода, это - имя в терминал и Enter нажатия, любую плоскость как это:

list.sh

или с названием каталога Вы хотите, чтобы это действовало на подобный это:

list.sh /path/to/directory_that_has_your_movies

, Если Вы не включаете полный/path/to/directory_you_want_acted_upon, он выскажет разумное предположение о том, где найти его. Это могло бы не угадать. Если Вы хотите сохранить себя нажатия клавиш, можно дать сценарию более короткое имя как "литии" или если Вы хотите помочь помнить то, что он делает, можно дать ему более длинное имя как "list_files_within_without_extensions.sh. Окончание ".sh" является общей конвенцией для названий сценария именно так, Вы будете знать то, что файл путем рассмотрения его имени. можно назвать его чем-либо, даже "George Humperdink, III", если Вы хотите, но пробелы и запятые имеют тенденцию доставлять неприятности.

еще Некоторые мысли: В свете Вашего ответа на sudodus, я должен предостеречь, НЕ используют sudo для выполнения или его команды или моего сценария. Я не могу думать ни о каком серьезном основании для фильмов, которые будут принадлежать корню или в каталоге, принадлежавшем корню. Они абсолютно не должны быть выполнены в средстве просмотра корнем. У нас нет большой части вредоносной проблемы в, 'отклоняют экосистему, но вызывающий медиаплееры, даже средства просмотра рис., как корень, напрашиваются на неприятности и если достаточно людей напросится на неприятности, то кто-то обеспечит его. Поэтому файлы ДОЛЖНЫ быть читаемыми простым пользователем, и это чинили бы неудобное сохранить их в каталоге, который не был читаем, перезаписываем, и "исполняем" простым пользователем. Если бы или его команда или мои сбои сценария способом, что sudo предотвратил бы, то необходимо изменить перманент файлов или каталога, в котором они находятся. Используя sudo был бы похож на поджог мебели, потому что AC потеснился слишком холодный. Это просто даст Вам БОЛЬШЕ проблем разрешения путем создания корневых файлов списка. Никогда не используйте sudo, если Вы НЕ ИМЕЕТЕ к, и затем только если он имеет смысл. Если это не имеет смысла должным быть использовать sudo, то решает проблему, не работайте вокруг этого.

кроме того, да его команда будет работать на другие расширения при внесении логических изменений в ней. Сценарий работает на любые расширения, как.

Вы отметите около середины, закомментированная строка относительно того, хотите ли Вы, чтобы это вошло в один список в каталоге, на который он действует, или сделайте отдельный текстовый файл для каждого фильма. Помещение" #" метка в начале строки упоминается как "комментирование" строки. Это означает, что это - комментарий для людей, чтобы считать и колотить, проигнорирует его. Можно заставить сценарий работать так или иначе путем изменения, какая из пары строк прокомментирована. Нужно быть прокомментирован, и другой не прокомментированный.

0
ответ дан 3 November 2019 в 06:05

Другие вопросы по тегам:

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