#linux #copy #cp
#linux #Копировать #cp
Вопрос:
У меня есть пара сотен выходных файлов пациентов в подкаталогах, которые мне нужно сопоставить и проанализировать.
/project/folder1/folder2/samplenumber/file.filetype
Мне нужно скопировать все это из размещенной области в мою собственную рабочую область для анализа
Я хочу, чтобы в итоге
/mydrive/myproject/myfolder/samplenumber.filetype
/mydrive/myproject/myfolder/samplenumber.filetype
/mydrive/myproject/myfolder/samplenumber.filetype
Я подумал что-то вроде
cp -v /project/folder1/folder2/*/file.filetype /mydrive/myproject/myfolder/*.filetype
будет ли это работать?
Ответ №1:
Для этого вам нужно будет использовать команду find, анализируя вывод в цикле
find /project/folder1/folder2 -name "*.filetype" | while read line
do
payth=${line%/*.*}
samp=${payth#/*/*/*/}
cp "$line" "/mydrive/myproject/myfolder/$samp.filetype"
done
Для каждой строки, возвращаемой командой find, мы устанавливаем переменную payth в путь к файлу (используя расширение параметра bash и соответствие шаблону суффикса). Затем мы используем эту переменную payth для получения последнего каталога (используя расширение параметра bash и соответствие шаблону префикса), считывая это в переменную samp. Эта переменная samp, наконец, используется как имя файла в команде копирования.