我无法使这个简单的脚本在bash 中工作
# Works
for f in *; do
for j in $f/Attachments/*.pdf; do
echo "$j"
done;
done
# Doesn't work
for f in *; do
for j in $f/Attachments/*.pdf; do
if [ ! pdfinfo "$j" &> /dev/null ]; then
echo "$j"
fi
done;
done
我已经阅读了10多本指南,我不明白为什么这个脚本会列出一堆随机目录。
它应该:
- 列出当前目录中的文件夹
- 在每个文件夹中,它应该在子目录Attachments中列出所有PDF文件
- 对于每个文件,它应该检查它是否已损坏,如果已损坏,则打印它
您想要的可以通过以下代码片段实现:
for f in */Attachments/*.pdf; do
if ! pdfinfo "$f" &>/dev/null; then
echo "$f"
fi
done
在代码中,for f in *
遍历所有文件(包括目录(。如果只需要目录,则必须使用了for f in */
。比如:
for d in */; do
for f in "$d"Attachments/*.pdf; do
[[ -f $f ]] || continue
if ! pdfinfo "$f" &>/dev/null; then
echo "$f"
fi
done
done