我有将近30,000个.pdb文件作为输入传递给C程序(linux envi)并获得所需的输出。由于某些机密性问题,我无法共享该程序。请允许任何人提供一些建议,如何通过一次提供所有文件来获得输出。
注意: 我可以通过提供单个文件来执行,即
./ file_name x.pdb
由于输入文件数以千计,因此无法单独运行每个文件。
答案 0 :(得分:0)
@“M Ohem”是对的。您可以使用:./filename *.pdb.
但是您需要记住,命令行长度限制因系统而异link。它可以检查为:xargs --show-limits。
我的Ubuntu 14.04输出
xargs --show-limits
Your environment variables take up 3140 bytes
POSIX upper limit on argument length (this system): 2091964
POSIX smallest allowable upper limit on argument length (all systems): 4096
Maximum length of command we could actually use: 2088824
Size of command buffer we are actually using: 131072
因此,如果文件名长度为30,000 pdb文件(您需要考虑空格)的累积总和可以在您的系统命令行长度限制中得到满足,那么您最好使用上述解决方案。
否则,如果您可以灵活地将每个文件独立传递给二进制文件,那么您可以编写一个单独的脚本,您可以在每个文件中为每个文件调用二进制文件。
for file in `ls -1 *.pdb`
do
./filename $file
done
答案 1 :(得分:-1)
XARGS
应该可以解决您的问题。
按照以下步骤:
在终端上运行以下命令。
find . -name "*.pdb" | xargs ./a.out
如果上述命令失败,则表示文件名的输出大小大于xargs可以接受的大小。
您可以使用以下awk:
find . -name "*.pdb" | awk -F"/" '{system ("./a.out " $2)}'
其中./a.out可以替换为C可执行文件的完整路径。
它将在单个命令中逐个处理所有pdb文件。
欢呼声