我正在用bash编写一个夜间构建脚本。
一切都很好,除了一个小问题:
#!/bin/bash
for file in "$PATH_TO_SOMEWHERE"; do
if [ -d $file ]
then
# do something directory-ish
else
if [ "$file" == "*.txt" ] # this is the snag
then
# do something txt-ish
fi
fi
done;
我的问题是确定文件扩展名,然后执行相应的操作。我知道问题出在if-语句中,测试txt文件。
如何确定文件是否具有.txt后缀?
发布于 2009-01-02 15:59:50
我想你会说“$file的最后四个字符是否等于.txt
?”如果是这样,您可以使用以下命令:
if [ "${file: -4}" == ".txt" ]
请注意,file:
和-4
之间的空格是必需的,因为':-‘修饰符的含义不同。
发布于 2009-01-02 16:30:28
制作
if [ "$file" == "*.txt" ]
如下所示:
if [[ $file == *.txt ]]
也就是说,双括号和无引号。
==
的右侧是一个外壳模式。如果需要正则表达式,则使用=~
。
发布于 2009-01-02 16:10:02
在Unix系统上,你不能确定.txt文件是否真的是一个文本文件。最好的办法是使用"file“。也许可以尝试使用:
file -ib "$file"
然后,您可以使用MIME类型列表来匹配或解析MIME的第一部分,在那里您可以获得"text“、"application”等内容。
https://stackoverflow.com/questions/407184
复制相似问题