这是我从*.png
文件夹子目录中获取positive
文件的方法:
FILES=./positive/*/*.png
如何修改此命令以同时获取*.png
,*.jpg
和*.bmp
个文件?只需一行。
解决方案1(感谢PiotrSliwa):
FILES=($(find ./positive/ -name '*.png' -o -name '*.jpg' -o -name '*.bmp'))
并使搜索案例不敏感:
FILES=($(find ./positive/ -iname '*.png' -o -iname '*.jpg' -o -iname '*.bmp'))
解决方案2(感谢赛勒斯):
shopt -s extglob;
FILES=( ./positive/*/*.@(png|jpg|bmp) )
答案 0 :(得分:2)
shopt -s extglob # enable extended globbing
ls ./positive/*/*.@(png|jpg|bmp)
?(pattern-list)
:匹配给定模式的零次或一次
*(pattern-list)
:匹配给定模式的零次或多次出现
+(pattern-list)
:匹配给定模式的一个或多个实例
@(pattern-list)
:匹配给定模式之一
!(pattern-list)
:匹配除了某个给定模式之外的任何内容
来源:http://www.linuxjournal.com/content/bash-extended-globbing
填充数组:
shopt -s extglob
files=( ./positive/*/*.@(png|jpg|bmp) )
for f in "${files[@]}"; do echo "$f"; done
答案 1 :(得分:1)
您可以使用PDRectangle rect = page.getMediaBox();
float positionY = rect.getWidth();
positionY = positionY - pdfWriter.defaultBottomMargin;
if(positionY < positionX) {
positionY = rect.getWidth();
PDPage page2 = page;
rect = page2.getMediaBox();
document.addPage(page2);
PDPageContentStream contentStream = new PDPageContentStream(document, page2);
contentStream.appendRawCommands("T*\n");
contentStream.beginText();
// contentStream.setFont(font, 12);
contentStream.moveTextPositionByAmount(positionX, positionY);
contentStream.drawString(tmpText[k]);
contentStream.endText();
contentStream.close();
}
:
find
要将其用于find ./positive/ -name *.png
,*.png*
和*.jpg
,您可以利用代表“或”关键字的*.bmp
选项。有了它,您可以加入一些-o
表达式:
-name <NAME>
或者(如果您热衷于图形find ./positive/ -name *.png -o -name *.jpg -o -name *.bmp
运算符):
or
此外,如果您不确定所有文件都是小写名称 - 您可能需要使用find ./positive/ -name *.png || -name *.jpg || -name *.bmp
(不区分大小写)选项而不是-iname
。