如果我想检查是否存在单个文件,我可以使用test -e filename
或测试它[ -e filename ]
.
假设我有一个glob,我想知道是否存在名称与glob匹配的文件.glob可以匹配0个文件(在这种情况下我不需要做任何事情),或者它可以匹配1个或多个文件(在这种情况下我需要做一些事情).如何测试glob是否有匹配?(我不关心有多少匹配,如果我能用一个if
语句而没有循环(仅仅因为我发现最可读)这样做是最好的.
(test -e glob*
如果glob匹配多个文件,则失败.)
我想检查带有通配符的模式是否与/var/data/**/*.xml
磁盘上的任何文件或目录匹配。
显然我可以使用,Dir.glob
但是当有数百万个文件时它非常慢,因为它太急切了 - 它返回与模式匹配的所有文件,而我只需要知道是否有任何文件。
有什么办法可以检查吗?
我有一个bash脚本,如下所示
if [ -f "/sdcard/testfile"]
then
echo "exists" > /sdcard/outfile
else
echo "does not exist" > /sdcard/outfile
fi
Run Code Online (Sandbox Code Playgroud)
我有足够的权限来运行它/system/bin/sh
.我从我的应用程序调用此脚本并运行它/system/bin/sh
.但是在运行后我得到了假,即使文件'/ sdcard/testfile'存在.当我在adb shell中明确运行时,我收到此错误
[: not found
Run Code Online (Sandbox Code Playgroud)
有没有其他方法可以完成这项任务?由于应用程序的权限问题,我不能只使用java.io.File; 因此,我坚持使用shell脚本(命令).
我需要应用程序本身的输出.我的意思是,
if(filesAreAvailable)
executeSomething();
else
executeSomethingElse();
Run Code Online (Sandbox Code Playgroud)
基本上我是以编程方式在/data/data/myPackageName/files
目录中编写此脚本并调用命令:
if [ -f "/sdcard/testfile"]
Run Code Online (Sandbox Code Playgroud)
如
fileWriterScript.write("if [ -f \"/sdcard/testfile\" ]\n")
Run Code Online (Sandbox Code Playgroud)