美文网首页
【shell】批量重命名

【shell】批量重命名

作者: 花生学生信 | 来源:发表于2024-07-29 17:29 被阅读0次

    想按照顺序把文件重新命名成新文件名

    按顺序命名

    需要准备2个文件,可以通过ls 重定向 获得

    #!/bin/bash
    
    # 读取两个文件的行数以确保它们相等
    lines1=$(wc -l < all_1)
    lines2=$(wc -l < all_2)
    
    if [ "$lines1" -ne "$lines2" ]; then
        echo "Error: The number of lines in all_1 and all_2 must be equal."
        exit 1
    fi
    
    # 读取 all_2 文件的所有行到数组中
    mapfile -t new_names < all_2
    
    # 逐行读取文件并复制/重命名
    i=0
    while IFS= read -r old_name; do
        new_name=${new_names[$i]}
        # 复制文件并重命名
        cp "$old_name" "$new_name"
        ((i++))
    done < all_1
    
    echo "All files copied and renamed successfully."
    
    重命名后,注意看文件大小

    也可以把两个文件放一个文件,再重命名

    ###按文件大小排序
    ls -S *.bin >all_1
    
    paste all_1 all_2 > merged_files.txt
    
    cat merged_files.txt |while read id1 id2
    do
    cp $id1 $id2
    done
    
    

    合并所有tsv数据:

    import sys
    
    def read_gene_list(filename):
        """从文件中读取基因列表"""
        with open(filename, 'r') as file:
            genes = set(line.strip() for line in file)
        return genes
    
    def process_sv_file(genes, sv_filename, output_filename):
        """处理 SV 文件并筛选出基因列表中的基因及其对应的 SV 类型"""
        with open(sv_filename, 'r') as sv_file, open(output_filename, 'w') as output_file:
            for line in sv_file:
                parts = line.strip().split('\t')
                if len(parts) >= 11:  # 确保至少有11列
                    gene_part = parts[6]
                    for gene in genes:
                        if gene in gene_part:  # 检查第七列是否包含基因列表中的基因
                            sv_type = parts[10]
                            output_file.write(f"{gene}\t{sv_type}\n")
                            break
    
    if __name__ == "__main__":
        if len(sys.argv) != 4:
            print("Usage: python script.py <gene_list_file> <sv_data_file> <output_file>")
            sys.exit(1)
    
        gene_list_filename = sys.argv[1]
        sv_data_filename = sys.argv[2]
        output_filename = sys.argv[3]
    
        # 读取基因列表
        genes = read_gene_list(gene_list_filename)
    
        # 处理 SV 数据文件
        process_sv_file(genes, sv_data_filename, output_filename)
    
        print("处理完成!")
    

    长数据转宽数据:

    library(tidyverse)
    data <- read_tsv("merged_with_csj.tsv")
    print(data)
    
    # 使用 pivot_wider() 将数据从长格式转换为宽格式
    wide_data <- data %>%
      pivot_wider(names_from = sample, values_from = num, values_fill = 0)
    
    print(wide_data)
    write_csv(wide_data, "merged_with_csj_wide.csv")
    
    保存表格

    相关文章

      网友评论

          本文标题:【shell】批量重命名

          本文链接:https://www.haomeiwen.com/subject/geswhjtx.html