Найти, повторить, переименовать и скопировать в эту папку

Рассматривали ли вы сценарий инициализации, который будет проверять эти устройства fb и скопировать xorg.conf на место, если они существуют, а затем удалить его, когда он выключится? Вы можете добавить его в порядок загрузки до того, как X или lightdm начнет работу, но после обнаружения адаптера DisplayLink и создания устройства. Скрипт инициализации довольно прост, поэтому он должен решить вашу проблему.

0
задан 30 March 2018 в 18:07

2 ответа

Вот пример скрипта, который пользователи find, выход которого передан в контур while:

find "/mnt/TV Shows/" -type f -name "fanart.jpg" | while IFS= read -r item; do NAME="${item##*/}" echo cp "$item" "/mnt/Wallpapers/Slideshow/${NAME%.*}-$((i++)).${NAME##*.}" done Удалите echo действие. Имя целевого файла будет состоять из: ${name of source file}-$((sequential number))-${extension of source file} Нумерация начнется с 0, так как переменная $i не была предварительно инициализирована. Вы можете поставить i=1; до find, чтобы начать нумерацию с 1.

Вот более сложный сценарий bash, который использует параметр globstart **, чтобы сделать рекурсивный поиск файла в папке. Если есть совпадение, файл будет скопирован в папку назначения. Вы можете выбирать между различными шаблонами имени файла назначения, изменяя внутреннюю (if-fi) часть скрипта.

#!/bin/bash INPUT_PATH="/mnt/TV Shows" INPUT_FILE_NAME="fanart.jpg" OUTPUT_PATH="/mnt/Wallpapers/Slideshow" shopt -s globstar for item in "${INPUT_PATH}"/**; do # If the item is a file and its name is equal to the INPUT_FILE_NAME if [[ -f "$item" && "${item##*/}" == "$INPUT_FILE_NAME" ]]; then # Compose OUTPUT_FILE name based on the parent directory name INPUT_FILE_FULL_PATH="${item%/*}" INPUT_FILE_PARENT_DIR="${INPUT_FILE_FULL_PATH##*/}" OUTPUT_FILE_NAME="${INPUT_FILE_NAME%.*}-${INPUT_FILE_PARENT_DIR}.${INPUT_FILE_NAME##*.}" # Remove 'echo' to execute the command !!! echo cp "${item}" "${OUTPUT_PATH}/${OUTPUT_FILE_NAME}" fi done

Ссылки:

Удалите echo действие.

Удалите echo действие.

1
ответ дан 17 July 2018 в 17:47

Вот пример скрипта, который пользователи find, выход которого передан в контур while:

find "/mnt/TV Shows/" -type f -name "fanart.jpg" | while IFS= read -r item; do NAME="${item##*/}" echo cp "$item" "/mnt/Wallpapers/Slideshow/${NAME%.*}-$((i++)).${NAME##*.}" done Удалите echo действие. Имя целевого файла будет состоять из: ${name of source file}-$((sequential number))-${extension of source file} Нумерация начнется с 0, так как переменная $i не была предварительно инициализирована. Вы можете поставить i=1; до find, чтобы начать нумерацию с 1.

Вот более сложный сценарий bash, который использует параметр globstart **, чтобы сделать рекурсивный поиск файла в папке. Если есть совпадение, файл будет скопирован в папку назначения. Вы можете выбирать между различными шаблонами имени файла назначения, изменяя внутреннюю (if-fi) часть скрипта.

#!/bin/bash INPUT_PATH="/mnt/TV Shows" INPUT_FILE_NAME="fanart.jpg" OUTPUT_PATH="/mnt/Wallpapers/Slideshow" shopt -s globstar for item in "${INPUT_PATH}"/**; do # If the item is a file and its name is equal to the INPUT_FILE_NAME if [[ -f "$item" && "${item##*/}" == "$INPUT_FILE_NAME" ]]; then # Compose OUTPUT_FILE name based on the parent directory name INPUT_FILE_FULL_PATH="${item%/*}" INPUT_FILE_PARENT_DIR="${INPUT_FILE_FULL_PATH##*/}" OUTPUT_FILE_NAME="${INPUT_FILE_NAME%.*}-${INPUT_FILE_PARENT_DIR}.${INPUT_FILE_NAME##*.}" # Remove 'echo' to execute the command !!! echo cp "${item}" "${OUTPUT_PATH}/${OUTPUT_FILE_NAME}" fi done

Ссылки:

Удалите echo действие.

Удалите echo действие.

1
ответ дан 23 July 2018 в 18:38

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

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