我尝试使用 objdump 命令反汇编当前目录中扩展名为 .o 的所有文件,然后将此命令的每个 .o 文件的输出放入具有相同基名的 .txt 文件中。
举个例子,假设我的目录中有这三个文件:
myfirstfile.o someotherfile.o finalfile.o
我的目标是最终得到三个新的附加文件(每个文件包含objdump
相应原始 .o 文件中的命令的输出):
myfirstfile.txt someotherfile.txt finalfile.txt
这是我尝试过的,但它只是说“不明确的重定向”:
objdump -d --no-show-raw-insn *.o > *.txt
答案1
您需要为每个文件运行一个命令,因此最好是使用循环。
带壳zsh
:
for f (./*.o) objdump -d --no-show-raw-insn $f > $f:r.txt
使用bash
shell 或任何其他 POSIX shell(包括zsh
):
for f in ./*.o; do objdump -d --no-show-raw-insn "$f" > "${f%.o}.txt"; done
*.txt
请注意,如果没有.o
文件(除了 in zsh
),将会创建一个名为 的空文件。
答案2
如何创建一个名为 myobjdump.sh 的文件,该文件运行如下:
./myobjdump.sh `ls *.o`
脚本如下:
#!/bin/bash
for ((i=1; i<=$#; i++)); do
objdump -d --no-show-raw-insn $i > `basename $i .o`.txt
done
编辑
#!/bin/bash
for n in $@; do
objdump -d --no-show-raw-insn $n > `basename $n .o`.txt
done