Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在bash中使用xargs和sed查找表达式并替换为.txt文件名?_Bash_Sed_Xargs - Fatal编程技术网

如何在bash中使用xargs和sed查找表达式并替换为.txt文件名?

如何在bash中使用xargs和sed查找表达式并替换为.txt文件名?,bash,sed,xargs,Bash,Sed,Xargs,我想在特定文件中找到一个表达式,并用脚本中使用的文件的当前名称替换它。我当前的脚本是: for FILE in ../pdb/*; do basename $FILE .pdb | xargs -I '{}' sed -i 's/_final.pdb/{}_final.pdb/g' ./temp.txt ./program < temp.txt done 用于../pdb/*中的文件; 做 basename$FILE.pdb | xargs-I

我想在特定文件中找到一个表达式,并用脚本中使用的文件的当前名称替换它。我当前的脚本是:

for FILE in ../pdb/*; 

    do

    basename $FILE .pdb | xargs -I '{}' sed -i  's/_final.pdb/{}_final.pdb/g' ./temp.txt

    ./program < temp.txt

    done
用于../pdb/*中的文件;
做
basename$FILE.pdb | xargs-I'{}sed-I's/_final.pdb/{}_final.pdb/g./temp.txt
/程序
psfgen.inp中的输出包含每个文件的名称,而不仅仅是当前文件:

writepdb fileAfileBfileC_final.pdb

它应该是:

writepdb文件a_final.pdb

如何替换temp.txt中的当前basename,使程序在从循环写入下一个basename之前使用temp.txt,而不是在执行程序之前写入文件夹中所有文件的basename


谢谢

好的,答案就是这样替换整条线路:

for FILE in ../pdb/*; 

    do

    basename $FILE .pdb | xargs -I '{}' sed -i  '/_final.pdb/c\writepdb {}_final.pdb' ./temp.txt

    ./program < temp.txt

    done
用于../pdb/*中的文件;
做
basename$FILE.pdb | xargs-I'{}sed-I'/_final.pdb/c\writepdb{}_final.pdb'/temp.txt
/程序