【发布时间】:2019-04-09 02:03:09
【问题描述】:
我正在尝试编写一个 bash 脚本,它递归地遍历目录中的文件,将文件名和 hexdump 写入文件。我当前的脚本:
#/bin/sh
touch hexdump.txt
for filename in logical/*; do
echo "$filename"
"$filename" >> hexdump.txt
hd /logical/"$filename" >> hexdump.txt
done
当前输出为:
logical/*
./hexadecimalExtraction.sh: line 5: logical/*: No such file or directory
hd: /logical/logical/*: No such file or directory
我如何让它将“逻辑/*”解释为“逻辑”目录中的文件列表而不是文件名本身???
【问题讨论】:
-
看起来您的
logical/目录是空的。printf '%s\n' logical/*说什么? -
这个“逻辑”目录在哪里?
logical/*将在当前工作目录下查找它(以及其中的文件),但对于/logical,前导的“/”将使其成为而是查看文件系统的顶层。区别很重要。 -
在做之后添加一个
[[ -f "$filename" ]] || continue,也许吧? -
同样,如果您找到
logical/fileX,您对hd的调用将尝试对/logical/logical/fileX进行操作。这是你的意图吗?