美文网首页
批量对文件进行操作

批量对文件进行操作

作者: 徐沫沫 | 来源:发表于2019-07-22 14:34 被阅读0次
    从miRNA网站ftp网址批量下载数据,整站抓取:
    wget -r -p -np -k http://www.pmiren.com/ftp-download/
    
    对下载的数据进行批量操作
    • 数据的格式
    1. 每个物种为一个文件夹,每个文件夹下包括此物种所有类型的数据:


      image.png
    2. 对各物种的成熟序列的fasta文件进行操作,即对每个文件夹下的某一个文件进行操作;
      (1)首先,对所有的文件夹批量重命名(例Amborella_trichopoda_Atr),改为物种名:
    for i in `ls ./ |cut -d "_" -f 3 --complement`; do echo $i; done > 1
    

    列出当前目录下所有文件名,并利用名称特征,将其用“_”进行分割,“-f 3”表示取第三列,“--complement”表示取除了第三列以外的几列;然后使用for循环对所有文件夹进行循环;返回文件夹的名称;循环结束;将文件夹名称输出到文件1中。此时文件夹的名称为Amborella_trichopoda。

    ls ./ > 2
    

    列出所有的文件夹名称,输出到文件2,此时2中名称为Amborella_trichopoda_Atr;

    paste 2 1 > 3
    

    将2、1两个文件夹的内容合到一个文件3,此时3的内容为每行两个名称,
    Amborella_trichopoda_Atr Amborella_trichopoda

    sed -i "s/^/mv /g" 3
    

    对文件3进行操作,使用sed命令,“^”定位到开头,将开头替换(实际效果是在每行开头增加)为“mv ”,使得每行都成为一行命令:mv Amborella_trichopoda_Atr Amborella_trichopoda,即现在文件3每行都是一个重命名的命令,当成一个shell脚本运行即可:

    sh 3
    

    此时,将所有文件夹的名字都进行了修改。
    (2)将接下来要操作的文件取出来

    mkdir mature
    for i in `cat 1`; do cp $i/${i}_mature.fa mature/; done
    

    打开1文件,对其每行的内容进行循环,每行为一个物种名,也是修改后的文件夹的名称。将此文件夹下,以文件夹名加上“_mature.fa”为名称的文件拷贝到mature文件夹下。
    以上操作是基于文件夹和文件名称的规律进行的,有个别不符合的,单独操作补上。

    • 接下来,mature文件夹下为所有物种的成熟序列的数据,可以使用glob命令对其进行批量操作。

    相关文章

      网友评论

          本文标题:批量对文件进行操作

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