Não há uma maneira interna de concatenar um arquivo e removê-lo, você terá que dividi-lo em duas etapas.
Em zsh, ou em bash ≥4 após executar shopt -s globstar
, ou em ksh após executar set -o globstar
:
cd Test3
for x in **/*.fastq; do
cat "$x" >>"/auto/dr-lc_sa1/Data/Test2/$x" && rm "$x"
done
Sem **
para recorrer a subdiretórios, use find
.
cd Test3
find . -name '*.fastq' -exec sh -c 'cat "$0" >>"/auto/dr-lc_sa1/Data/Test2/$0" && rm "$0"' {} \;
Se Test2
e Test3
estiverem no mesmo sistema de arquivos e houver muitos arquivos em Test3
que não tenham um arquivo correspondente no destino, você poderá economizar algum tempo de execução movendo o arquivo em vez de concatenar em um arquivo vazio:
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