如何将部分文件名粘贴到文件内容中?

Ann*_*364 5 text-processing

我有一个包含 1000 个文件的文件夹;前面的所有字符均mapped.ILLUMINA.bwa.GIH.low_coverage.20130415.bam_dp指个人 ID(例如 NA21117、NA21119、NA21126 等)

NA21117.mapped.ILLUMINA.bwa.GIH.low_coverage.20130415.bam_dp
NA21119.mapped.ILLUMINA.bwa.GIH.low_coverage.20130415.bam_dp
NA21126.mapped.ILLUMINA.bwa.GIH.low_coverage.20121211.bam_dp
NA21127.mapped.ILLUMINA.bwa.GIH.low_coverage.20130415.bam_dp
NA21137.mapped.ILLUMINA.bwa.GIH.low_coverage.20120522.bam_dp
NA21142.mapped.ILLUMINA.bwa.GIH.low_coverage.20130415.bam_dp
NA21143.mapped.ILLUMINA.bwa.GIH.low_coverage.20130415.bam_dp
Run Code Online (Sandbox Code Playgroud)

每个文件只有一行:

cat NA21143.mapped.ILLUMINA.bwa.GIH.low_coverage.20130415.bam_dp
1   115258827   10
Run Code Online (Sandbox Code Playgroud)

对于这些文件中的每一个,我想将个人 ID 粘贴到文件的内容中,并得到如下输出:

1   115258827   10 NA21143
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

cod*_*ter 2

使用循环:

#!/bin/bash

shopt -s nullglob
for file in ???????.mapped.*bam_dp; do
  [[ -f "$file" ]] || continue
  id=${file%%.*}              # grab the ID from file name
  sed -i "s/$/ $id/" "$file"  # modify the file in-place
done
Run Code Online (Sandbox Code Playgroud)