Bash脚本:目录中的所有文件

时间:2015-04-08 11:28:02

标签: bash recursion concatenation

我是一个新编码器,无法编写一个bash脚本,其中我的目录中的所有日志文件(number001.log,number002.log等)都通过perl脚本(map_shifts2PDB.pl)进行处理每个numberXXX.log文件的结果连接到results.out文件。 perl脚本需要以下参数./map_shifts2PDB.pl <path of logfile> <path of test.pdb> (constant)以及要处理的日志文件的编号。我不知道如何将其与循环中读取的日志文件同步。这就是我到目前为止所做的:

#!/bin/bash

for f in ~/TrpCage_1L2Y/1L2Y_min_explicit/model1_charged/calculate/*.log; do

./map_shifts2PDB.pl ~/TrpCage_1L2Y/1L2Y_min_explicit/model1_charged/calculate ~/TrpCage_1L2Y/1L2Y
_min_explicit/model1_charged/test.pdb 1 >> results.out

done

1 个答案:

答案 0 :(得分:0)

只需使用参数扩展从文件名中提取数字:

num=${f##*/number}    # Delete everything up to /number.
num=${num%.log}       # Delete the extension.
./map_shifts2PDB.pl \ 
    ~/TrpCage_1L2Y/1L2Y_min_explicit/model1_charged/calculate \
    ~/TrpCage_1L2Y/1L2Y_min_explicit/model1_charged/test.pdb \
    $num >> results.out

你是什么意思&#34;递归&#34;在标题中?