我有一个带有名字的文本文件(delete_names.txt)。该文件有大约200行,如下所示:
ABAA742_2012-01-13_decont.fa
ABAA1502_2014-08-08_decont.fa
我想读取文件的每一行并连接字符串" .faa"在每一行的末尾,以获得:
ABAA742_2012-01-13_decont.fa.faa
ABAA1502_2014-08-08_decont.fa.faa
我尝试获取最后一个字符串,但子字符串总是在开头添加。
while read line; do
a='.faa'
echo -E "$line$a";
done < delete_names.txt
上面代码的输出:
.faa742_2012-01-13_decont.fa
.faa1502_2014-08-08_decont.fa
获得连接名称后的最终目标是删除目录中的文件。
答案 0 :(得分:0)
简短 sed
+ xargs
方法:
sed 's/$/.faa/' delete_names.txt | xargs -I {} rm {}
或者只使用一个 xargs
命令:
xargs -a delete_names.txt -I {} rm {}.faa
-a file
- 从file
而非标准输入答案 1 :(得分:0)
我经常使用gnu-parallel来完成这类工作,可能是这样的:
cat delete_names.txt | parallel rm -rf "{}a"
它的作用是将每个名称传递给parallel
命令,并将其分配给一个或多个进程。我刚刚添加了"{}a"
,但您也可以使用"{.}.faa"
删除字符串的扩展名。