Кто-то может помочь мне сделать этот сценарий более читаемым?

SRC="/src"
export DEST="/dest"

find "${SRC}" -iname '*' -type f -exec bash -c 'EXT="${0##*.}"; EXT=${EXT,,}; if [[ "${EXT}" == *"/"* ]]; then EXT="no_extension"; fi; mkdir -p "${DEST}/${EXT}"; rsync -a "$0" "${DEST}/${EXT}"' "{}" \;

Этот сценарий организует SRC к DEST при помощи находки для итерации всех файлов в папке SRC и на каждом найденном файле, это выполняет следующее:

  1. Сохраняет расширение файла в EXT
  2. Преобразовать EXT к нижнему регистру
  3. Делает EXT содержите a / символ? Если да, то EXT="no_extension"
  4. Создайте новую названную папку $EXT в $DEST папка
  5. rsync файл к папке просто создается. -a флаг для дополнительного-preservedness.

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

Как я могу перестроить это так, легче использовать?

Править: Это не исходная работа, но она изменяется мной. Это - единственный сценарий, я мог понять, что это сделало то, что я хотел. Но теперь я хочу добавить больше.

Спасибо!

0
задан 28 November 2014 в 16:19

1 ответ

Переместитесь все bash команда к сценарию (скажите, в /some/path/sync.sh):

#! /bin/bash

for i 
do
    EXT="${i##*.}" 
    EXT=${EXT,,}

    if [[ "${EXT}" == *"/"* ]]
    then 
        EXT="no_extension"; 
    fi

    mkdir -p "${DEST}/${EXT}"
    rsync -a "$i" "${DEST}/${EXT}"
done

Тогда звонят find таким образом:

SRC="/src"
export DEST="/dest"

find "${SRC}" -iname '*' -type f -exec /some/path/sync.sh {} +

И теперь добавляют все функции, которые Вы хотите.

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

find ... ! -regex '.*\.(some|useless|exts) 

(С некоторым выходом ( и | и соответствующий выбор -regextype.)

... -exec

(С некоторым выходом ( и | и соответствующий выбор -regextype.)

2
ответ дан 6 October 2019 в 09:13

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

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