Как игнорировать часть имени файла

Вы ошибаетесь.

Единственным свойством , которое находится в файловом дескрипторе -и которое можно изменить с помощью fcntl(F_SETFD), является FD_CLOEXECзакрытие -флага -exec.

Все остальные свойства относятся либо к файловому объекту (, «описанию открытого файла» в жаргоне POSIX --, которое можно изменить с помощью fcntl(F_SETFL)), либо к индексному узлу.

Установка флага отсутствия блокировки -с помощью fcntl(F_SETFL, | O_NONBLOCK)или с помощью ioctl(FIONBIO)повлияет на все файловые дескрипторы, которые ссылаются на этот открытый файл. Также нет способа сделать файл неблокирующим -только для чтения или записи.

Это далеко от идеала --вы также можете обратиться к этому вопросам и ответам на StackOverflow, особенно к ссылке на lkml обсуждение о неудачной попытке как-то исправить.

Обратите внимание, что обычные файлы в основном не -блокируют --, а poll(2)или select(2)на них будут возвращены немедленно.

Если вас интересуют только сокеты, вы должны использовать send(2)или recv(2)с флагом MSG_DONTWAITвместо read(2)или write(2). Вопреки тому, что вы говорите, дескриптор файла сокета может использоваться совместно между процессами и независимо от его семейства/протокола/параметров. И это также относится к прослушивающему сокету.

-121 ---234860 ​​-

Не уверен, что вызывает ошибку (не знаком ни с одним из них ), но на странице темы vimix есть несколько комментариев, сообщающих о проблеме.https://www.gnome-look.org/p/1276216/

Автор vimix сообщает, что исправит это в ближайшем обновлении. Возможно, он изучает причину проблемы. Кроме того, в описании упоминается обходной путь решения проблемы. Если окажется, что это ошибка в компоненте xfce, об этом необходимо сообщить команде xfce.

1
30.06.2021, 18:00
2 ответа

$ кат 952 _53929 _S *R1. _001.fastq.gz >> файл -имя

1
28.07.2021, 11:21

Если у вас есть только несколько имен сэмплов, вы можете сделать это вручную:

cat folder*/952_53929_S*_R1_*.fastq.gz > 952_53929_combined_L001_R1_001.fastq.gz
cat folder*/952_53929_S*_R2_*.fastq.gz > 952_53929_combined_L001_R2_001.fastq.gz
cat folder*/952_56890_S*_R1_*.fastq.gz > 952_56890_combined_L001_R1_001.fastq.gz
cat folder*/952_56890_S*_R2_*.fastq.gz > 952_56890_combined_L001_R2_001.fastq.gz

Если у вас больше, это не очень практично. Таким образом, вы можете вместо этого собирать имена самостоятельно:

$ for f in */952_*.fastq.gz; do fname=$(basename "$f"); echo ${fname%%_S*} ; done | sort | uniq
952_53929
952_56890

Это даст вам ваши префиксы, и поэтому вы можете сделать:

for f in */952_*.fastq.gz; do 
    fname=$(basename "$f"); 
    echo ${fname%%_S*} ; 
done | 
    sort | 
        uniq | 
            while read prefix; do 
                cat */"$prefix"*_R1_*.fastq.gz > "$prefix"_combined_L001_R1_001.fastq.gz; 
                cat */"$prefix"*_R2_*.fastq.gz > "$prefix"_combined_L001_R2_001.fastq.gz; 
            done
1
28.07.2021, 11:21

Теги

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