Копировать несколько файлов из нескольких папок в одну

Решено путем обновления HTTP-сервера Unicorn с версии 4.9 до версии 5.3. Я не знаю, решило ли обновление проблему или это была переустановка этой решенной проблемы. Странно то, что я никогда не мог точно определить проблему с помощью инструментов мониторинга или ведения журнала.

2
01.10.2019, 10:48
4 ответа

Используя простой цикл оболочки, предполагая, что файлы должны быть скопированы в каталог, заданный значением$destdir:

for pathname in */*.gz; do
    cp -i -- "$pathname" "$destdir/$( dirname -- "$pathname" )_$( basename -- "$pathname" )"
done
1
27.01.2020, 22:16

Попробуйте это,

  find folder[1-3] -type f -name '*.gz' | while read -r FILE; do cp "$FILE" "${FILE//\//_}"; done
  • folder[1-3]местоположение источника.
  • -type fпоиск только файлов.
  • -name '*.gz'суффикс имени файла с .gz.
  • ${FILE//\//_}замените '/' на подчеркивание.
0
27.01.2020, 22:16

С предварительным именем/переименованием (также известным как Perl Ларри Уолла -переименовать)(renameв Debian/Ubuntu, prenameв RHEL/CentOS, IIRC):

В родительском элементе folder1, folder2,folder3:

rename -n s:/:_: */*

-n— это параметр пробного запуска, замените на «-v» или удалите, если переименование выглядит хорошо.

0
27.01.2020, 22:16

Что-то вроде этого?

#!/bin/bash -ex
DESTDIR="PATH/TO/FINAL/DESTINATION/DIRECTORY"
for DIRS in /PATH/TO/YOUR/DIRECTORIES/*/;
do
    for FLES in $DIRS*.gz;
    do
        cp $FLES $DESTDIR/$(echo $(basename $DIRS)"_"$(basename $FLES))
    done
done

Изменить :Я потрудился не добавлять пояснений к коду, потому что ОП не удосужился показать, что они пытались решить проблему самостоятельно (если вообще ). Но помощь все равно придется оказать, отсюда и мой пост.

0
27.01.2020, 22:16

Теги

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