Как перемещать файлы с тем же именем и объединяться

Ниже приведена структура каталогов. Мне нужно переместить все папки из Test3 в Test2 и объединить файлы с одинаковыми именами

[jg@hpc Test2]$ tree . |-- Sample_1008 | |-- 1008_ATCACG_L002_R1_001.fastq | |-- 1008_ATCACG_L002_R2_001.fastq | |-- 1008_ATCACG_L006_R1_001.fastq | `-- 1008_ATCACG_L006_R2_001.fastq `-- Sample_1009 |-- 1009_CGATGT_L002_R1_001.fastq |-- 1009_CGATGT_L002_R2_001.fastq |-- 1009_CGATGT_L006_R1_001.fastq `-- 1009_CGATGT_L006_R2_001.fastq [jg@hpc Test3]$ tree . |-- Sample_1008 | |-- 1008_ATCACG_L002_R1_001.fastq | |-- 1008_ATCACG_L002_R2_001.fastq | |-- 1008_ATCACG_L006_R1_001.fastq | `-- 1008_ATCACG_L006_R2_001.fastq `-- Sample_1009 |-- 1009_CGATGT_L002_R1_001.fastq |-- 1009_CGATGT_L002_R2_001.fastq |-- 1009_CGATGT_L006_R1_001.fastq `-- 1009_CGATGT_L006_R2_001.fastq 

Я пытался

 mv Test3/* /auto/dr-lc_sa1/Data/Test2 

ничего не сработало, но когда я попробовал

 cp -r Test3/* Test2/ 

Он перезаписывается.

Я хочу, чтобы файлы были объединены. В конце мне нужно иметь один каталог Test2 и под каждым образцом, а их файлы fastq в каталоге Test3 будут объединены в соответствующие файлы fastq в каталоге Test2.

One Solution collect form web for “Как перемещать файлы с тем же именем и объединяться”

Нет встроенного способа конкатенации файла и его удаления, вам придется разбить его на два шага.

В zsh или в bash ≥4 после запуска shopt -s globstar или в ksh после запуска set -o globstar :

 cd Test3 for x in **/*.fastq; do cat "$x" >>"/auto/dr-lc_sa1/Data/Test2/$x" && rm "$x" done 

Без ** для возврата в подкаталоги используйте find .

 cd Test3 find . -name '*.fastq' -exec sh -c 'cat "$0" >>"/auto/dr-lc_sa1/Data/Test2/$0" && rm "$0"' {} \; 

Если Test2 и Test3 находятся в одной и той же файловой системе, и в Test3 есть много файлов, у которых нет соответствующего файла в месте назначения, вы можете сохранить некоторое время выполнения, перемещая файл, а не конкатенировать его в пустой файл:

 for x in **/*.fastq; do if [ -s "../Test2/$x" ]; then cat "$x" >>"/auto/dr-lc_sa1/Data/Test2/$x" && rm "$x" else mv "$x" "/auto/dr-lc_sa1/Data/Test2/$x" fi done 
  • Bash, выполнить команду после вызова новой оболочки
  • Скопируйте файлы из каталога, если имя присутствует в текстовом файле
  • Выполнять команды по отключению tmux
  • Как правильно избежать этой длинной команды su + sed?
  • Что такое эквивалент Fedora /var/lib/dpkg/info/.prerm?
  • добавить имя файла в текст в углу файла изображения
  • Поиск текста внутри выходной команды java
  • Что означает «$ {- # * i}"! = "$ -" означает?
  • сценарий оболочки для проверки состояния переданной строки
  • Принуждение к расширению глобального псевдонима частью слова
  • Баш читал с разделителем прошлых строк
  • Interesting Posts

    Как работает эта команда vim: g / # / + 1t.`

    Монетный двор 13: Возможно ли пропустить стандартное диалоговое окно пароля для входа в систему с помощью маятника с ключом

    Создание переменных и назначение значений через loop (bash)

    может ли пользователь root использовать любой uid

    Как обрезать имя файла из нескольких файлов в папке

    Конфигурация по умолчанию Мне нужно изменить?

    Ansible: вернуть статус последнего задания

    Что изменяет mkinitrd при добавлении модулей ядра в initrd?

    Количество блоков обработки, доступных меньше, чем онлайн-процессоры

    Преобразование многострочных линий в одну строку с помощью SED

    Умный полный .c и .o

    Как grep, включая одиночную кавычку в файле

    Что означает термин статическая переменная в unix?

    Эмуляция поведения блокировки прокрутки для запуска USB-переключателя KVM

    Экран гостевой Windows XP имеет неправильное соотношение сторон

    Linux и Unix - лучшая ОС в мире.