Копирование нескольких файлов из одного подкаталога в другой с подстановочными знаками - PullRequest
0 голосов
/ 26 сентября 2018

У меня проблемы с подстановочным знаком в наборе папок, с которым я работаю, и мне было интересно, как лучше всего скопировать эти файлы.Например, моя структура папок выглядит следующим образом:

000
    001
        001
            medium
                image1.jpg

            original
                image1.jpg

            thumb
                image1.jpg
        002
            medium
                anotherimage2.jpg

            original
                anotherimage2.jpg

            thumb
                anotherimage2.jpg
        003
            medium
                someimage3.jpg

            original
                someimage3.jpg

            thumb
                someimage3.jpg
    002
        001
            medium
                whome_anotherimage_00002.jpg

            original
                whome_anotherimage_00002.jpg

            thumb
                whome_anotherimage_00002.jpg
        002
            medium
                crapnotthisagain_067.jpg

            original
                crapnotthisagain_067.jpg

            thumb
                crapnotthisagain_067.jpg

Мне нужно иметь скрипт bash / zsh или некоторую команду, которая рекурсивно перемещает изображение из исходной папки в каждом каталоге вкаталог большого пальца, перезаписывающий изображение большого пальца.

Пока что использование find или cp приводит меня к смешанным результатам.Я подошел ближе к

find 000/*/*/original/ -type f -name '*.jpg' -exec cp '{}' 000/*/*/thumb/ ';'

, но он копирует файлы только в последний каталог thumb, который он находит.Есть ли лучший способ написать это?

Обновление:

Выполнение следующего:

find 000000/*/*/original/ -type f -name '*.jpg' -exec cp -t 000000/*/*/thumb/ '{}' +

выбрасывает меня на Mac

cp: illegal option -- t
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file target_file
   cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file ... target_directory
cp: illegal option -- t
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file target_file
   cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file ... target_directory
cp: illegal option -- t
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file target_file
   cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file ... target_directory
cp: illegal option -- t
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file target_file
   cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file ... target_directory
cp: illegal option -- t
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file target_file
   cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file ... target_directory
cp: illegal option -- t
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file target_file
   cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file ... target_directory

и в Ubuntu: (и ничего не копирует)

cp: omitting directory ‘000000/001/998/thumb/’
cp: omitting directory ‘000000/001/999/thumb/’

1 Ответ

0 голосов
/ 26 сентября 2018

Как насчет зацикливания результатов поиска, а затем использовать подстроку замены, чтобы изменить «оригинал» на «большой палец» в переменной:

for i in $(find 000/*/*/original -type f -name '*.jpg'); do cp ${i} ${i/original/thumb}; done
...