Как скопировать определенные файлы из каталогов, в то время как имя каталогов было извлечено из файла Excel с помощью скрипта Bash - PullRequest
0 голосов
/ 26 мая 2019

Я новичок в Bash, и у меня есть список имен каталогов, сохраненных в файле Excel.Я хотел бы найти эти каталоги (они расположены в разных местах на компьютере) и скопировать из каждого каталога определенные файлы (список из 4 файлов, оканчивающихся определенными окончаниями) на удаленный компьютер.

Дляпримеры:

Для имени каталога на листе Excel - «NA123», я хотел бы найти его и скопировать его частичное содержимое на удаленный компьютер, например, скопировать файлы: samples-sheet.csv, toInfo.xml, newfiles.gz, todo.csv на удаленный компьютер под именем папки «NA123».

Как мне начать это делать?

**** Редактирование, чтобы привести пример того, как оно должно быть *****

Краткий пример csv приведен ниже:

         A
1  14RD00129_TS1_01
2  SD-2015-06_01
3  US-005
4  RA99

Все имена в csv являются каталогами, которые можно найти в /home/bella/samples в 3 разных папках: некоторые будут в /home/bella/samples/gruop_1, некоторые в: /home/bella/samples/gruop_2, а некоторые в: /home/bella/samples/gruop_3

Итак, сначала мне нужно перебрать файл csv, чтобы найти каталог соответствия на моем компьютере, затем мне нужно скопировать 4 конкретных файла на удаленный компьютер с тем же именем каталога.Надеюсь, это понятнее ...

Ответы [ 2 ]

1 голос
/ 27 мая 2019

Полагаю, ваш CSV-файл должен состоять только из имен каталогов, поскольку в нем только один столбец.Я предполагаю, что в CSV нет строки заголовка (A в вашем примере) и нет номера строки.Вы можете взять это как отправную точку:

samples='/home/bella/samples'
while IFS= read -r line; do
    dir=$(find "$samples"/gruop_{1..3} -type d -name "$line")
    scp "$dir"/{samples-sheet.csv,toInfo.xml,newfiles.gz,todo.csv} \
        user@host.com:"/path/to/$line"
done < 'file.csv'
0 голосов
/ 26 мая 2019

По сути, вы можете сделать что-то вроде:

# create the directory on the remote:
ssh remote-ip 'mkdir -p NA123'
# copy the files to the remote in the directory just created
for f in samples-sheet.csv toInfo.xml newfiles.gz todo.csv; do scp $f remote-ip:NA123/; done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...