标签: glob

如何在C#中实现glob

我不知道在StackOverflow上发布你自己的问题答案是否合法,但我看到没有人问过这个问题.我去寻找一个C#Glob并没有找到一个,所以我写了一个其他人可能觉得有用的.

c# glob wildcard

19
推荐指数
1
解决办法
8897
查看次数

osx更改文件编码(iconv)递归

我知道我可以使用以下命令在OSX下转换单个文件编码:

iconv -f ISO-8859-1 -t UTF-8 myfilename.xxx > myfilename-utf8.xxx

我必须转换一堆具有特定扩展名的文件,所以我想将文件编码从ISO-8859-1转换为UTF-8,用于文件夹/ mydisk/myfolder中的所有*.ext文件

或许有人知道如何做到这一点的语法

谢谢

EKKE

macos shell encoding glob iconv

19
推荐指数
1
解决办法
2万
查看次数

以冒号作为分隔符的全局/路径名扩展

如何转换包含glob字符的字符串,如

/var/lib/gems/*/bin
Run Code Online (Sandbox Code Playgroud)

到一个冒号分隔的文件名字符串(即PATH兼容)匹配模式?

echo /var/lib/gems/*/bin会返回

/var/lib/gems/1.8/bin /var/lib/gems/1.9.1/bin
Run Code Online (Sandbox Code Playgroud)

我想要

/var/lib/gems/1.8/bin:/var/lib/gems/1.9.1/bin 
Run Code Online (Sandbox Code Playgroud)

代替.

显而易见的方法是简单地用':'via替换空格字符tr,但是如果文件名本身包含空格字符则不起作用.

bash shell glob path expansion

19
推荐指数
3
解决办法
4470
查看次数

如何在JDK7中使用目录通配符

我一直在尝试使用JDK7中的新globbing功能,从文档和示例开始

我可以得到像我这样"glob:*.dat"的人

Files.walkFileTree(startingDir, finder);
Run Code Online (Sandbox Code Playgroud)

例如,但我无法使"**"语法正常工作.我希望能够创建类似的东西:

matcher = FileSystems.getDefault().getPathMatcher("glob:" + "foo/**/bar/*.dat");
Run Code Online (Sandbox Code Playgroud)

并希望得到一个简单的例子.我使用的是Windows 7.

更新:@Oleg和@JBNizet清楚地表明"/"语法与操作系统无关.请注意,Javadocs建议也可以使用依赖于操作系统的语法(需要)

仍有问题:已采取@Nizet并编辑如下:

@Test
public void testStackoverflowGlobber() throws IOException {
    final PathMatcher matcher =
 FileSystems.getDefault().getPathMatcher("glob:*.cml");
        Files.walkFileTree(Paths.get("d:/petermr-workspace/jumbo-converters/jumbo-converters-cli/src/test/resources"), new SimpleFileVisitor<Path>() {
            @Override
            public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
                System.out.println("try>> "+file);
                if (matcher.matches(file)) {
                    System.out.println("MATCHES>>"+file);
                }
                return FileVisitResult.CONTINUE;
            }
        @Override
        public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
            return FileVisitResult.CONTINUE;
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

这给出了如下输出:

try>> d:\petermr-workspace\jumbo-converters\jumbo-converters-cli\src\test\resources\examples\cdx\r19.cdx
try>> d:\petermr-workspace\jumbo-converters\jumbo-converters-cli\src\test\resources\examples\cdx\r19.cdxml
try>> d:\petermr-workspace\jumbo-converters\jumbo-converters-cli\src\test\resources\examples\cdx\r19.cml
try>> …
Run Code Online (Sandbox Code Playgroud)

java glob java-7 java.nio.file

19
推荐指数
2
解决办法
1万
查看次数

揭开Perl glob的神秘面纱(*)

这个问题中,海报询问如何在一行中执行以下操作:

sub my_sub {
    my $ref_array = shift;
    my @array = @$ref_array;
}
Run Code Online (Sandbox Code Playgroud)

凭借我对基本Perl魔法的了解,我可以通过简单地使用以下内容来避免:

sub my_sub {
    my $ref_array = shift;
    for (@$ref_array) {
      #do somthing with $_ here
    };

    #use $ref_array->[$element] here
}
Run Code Online (Sandbox Code Playgroud)

然而,在这个答案中,SO的当地僧侣之一提出:

sub my_sub {
  local *array = shift();
  #use @array here
}
Run Code Online (Sandbox Code Playgroud)

当我问

在尝试学习中级Perl魔法时,我可以问一下,你在这里设置什么是什么?您是否将@array的引用设置为已传入的arrayref?你怎么知道你创建@array而不是%array或$ array?我在哪里可以了解有关此*运算符的更多信息(perlop?).谢谢!

有人建议我把它作为一个新帖子,尽管他确实提供了很好的参考.无论如何,这里呢?有人可以解释什么被分配给什么以及如何创建@array而不是%array或$ array?谢谢.

perl glob

18
推荐指数
1
解决办法
7554
查看次数

如何只为一个目录级别`git ls-files`.

我正在使用msysgit(1.7.9),我正在寻找正确的git ls-files命令调用,以显示当前级别的(跟踪的)文件和目录,无论是从索引还是当前工作目录,如果这是更轻松.

基本上它会给出一个类似于你在Github上看到的目录列表.来自Windows,我不太熟悉正确的方法(?).

git ls glob

18
推荐指数
4
解决办法
1万
查看次数

Glob/*与以dot开头的文件不匹配

我正在使用gulp使用以下代码将所有文件从一个目录复制到另一个目录:

gulp.src([ 'app/**/*' ]).pipe(gulp.dest('dist'));
Run Code Online (Sandbox Code Playgroud)

Glob文档说*匹配所有文件,但实际上.gitignore不会复制名称以dot开头的文件.

如何解决这个问题?

glob gulp

18
推荐指数
1
解决办法
3817
查看次数

php"glob"和重复数据删除?

我有一个php应用程序(按要求)扫描一些文件的存在.(在网络共享上)

我正在使用glob这个,因为通常我只知道文件名的开头.

我注意到,这glob不会返回当前由任何客户端打开的文件,因此我的应用程序认为file_xy不存在,如果有人打开它.

有没有办法让glob回复打开(:=锁定?)文件?

奇怪的是,这没有提到的地方.但是我可以确认glob不返回当前由客户端打开的文件...(一旦客户端关闭访问应用程序,glob将像往常一样返回文件)


ps.:glob("\\server\share\*")只要打开文件就不会返回文件.(网络共享允许最大并发用户数)


    $dir = opendir ("\\server\share");
    while ($file = readdir($dir)){
      echo $file."<br />";
    }
Run Code Online (Sandbox Code Playgroud)

无论是否由其他客户打开,都可以完美地显示相关文件. - 所以我几乎可以排除任何访问限制/许可的东西......


我想通了的原因,即使我不知道原因,现在:

glob()当文件位于使用Windows Server 2012 R2内置重复数据删除功能的驱动器上时,将显示未找到打开文件的问题.

如果我将文件移动到非重复数据删除共享glob(),即使由多个客户端打开,也可以读取它.


由于我有一个可行的替代方案,这个问题应该主要关注为什么 glob不起作用的问题- 或者让我们说这里的工作不同.在如何glob以及readdir访问底层文件系统以确定内容方面必须有所不同.


另一个证明

还有另一个证明,这与数据重复数据删除有关:我将该功能配置为"仅"重复删除超过3天的文件.

我设置了一个cronjob,"打开并整理"共享中的某个文件.一旦它大约3天(Windows决定何时进行重复数据删除),当它由另一个客户端打开时,glob无法列出该文件.

因此,glob能够找到打开的文件,这些文件在前3天内被复制到共享中 - 然后在进行重复数据删除后开始错过它.

意见

glob的

glob 失败,导致这篇文章:-)

SCANDIR

使用上面提到的scandir函数显示了相同的行为:

  • 客户端打开的重复数据删除文件 - 在结果数组中丢失.
  • 客户端未打开重复数据删除文件 - 结果数组的一部分.

opendir/readdir

我想再次强调, …

php glob windows-server-2012-r2

18
推荐指数
1
解决办法
471
查看次数

命令行参数中*的问题

我用Java编写了一个程序,它通过命令行参数接受输入.我从命令行输入两个数字和一个运算符.为了将两个数相乘,我必须提供输入,例如5 3 *,但它不是按照书面形式工作的.

为什么不接受*命令行?

glob wildcard command-line-arguments

17
推荐指数
2
解决办法
1万
查看次数

将 WindowsPath 转换为字符串

redpath = os.path.realpath('.')              
thispath = os.path.realpath(redpath)        
fspec = glob.glob(redpath+'/*fits')
thispath = os.path.realpath(thispath+'/../../../..')
p = Path(thispath)
userinput = 'n'
while (userinput == 'n'):
   text_file = next(p.glob('**/*.fits'))
   print("Is this the correct file path?")
   print(text_file)
   userinput = input("y or n")

parent_dir = text_file.parent.resolve()
fspec = glob.glob(parent_dir+'/*fits')
Run Code Online (Sandbox Code Playgroud)

我收到错误

unsupported operand type(s) for +: 'WindowsPath' and 'str'
Run Code Online (Sandbox Code Playgroud)

我认为这是因为当我需要 glob 一个字符串时,我试图 glob 一个 Windows 文件路径。有没有一种方法可以将 WindowsPath 转换为字符串,以便我可以将所有文件合并到一个列表中?

python glob filepath pathlib

17
推荐指数
1
解决办法
2万
查看次数