查找在同一目录中同时存在该文件名的多个变体的文件

MasterScrat

我想列出给定目录中存在的所有这些文件:

  • <filename>.wed
  • <filename>.tis
  • <filename>.are
  • <filename>LM.bmp

我目前正在使用findsed它可以工作,但是又慢又慢!

find . -iname "*.wed" -exec echo {} \; | sed s/.wed$// $1 | sed s/..// $1 | while read in; do find . -name "$in.are"; done | sed s/.are$// $1 | sed s/..// $1 | while read in; do find . -name "$in.tis"; done | sed s/.tis$// $1 | sed s/..// $1 | while read in; do find . -name "$in*.bmp"; done

基本上find对于要过滤的每个扩展,我都将a ,2sed和a链接在一起while read

几乎不到30K的文件需要> 35s!我该如何改善?

例子

如果目录下有文件叫AR0505.areAR0505.tisAR0505.wedAR0505LM.bmp,那么该脚本将打印“AR0505”。

如果缺少这些文件中的一个或多个,则脚本将不会打印该文件。

lgeorget

我认为主要的瓶颈是您产生的进程数。这是一个简单的脚本,可一次性列出和过滤目录:

#!/usr/bin/perl

use strict;
use warnings;

my %files;
my $dir;
my @extensions = ("\.tis","\.are","LM\.bmp","\.wed");

opendir($dir, ".") || die "Error opening dir\n";
while (my $file = readdir($dir)) {
    foreach my $ext (@extensions) {
        if ($file =~ /^(.*)$ext$/sm) {
            $files{$1} += 1;
        }
    }
}
closedir($dir);

foreach my $file (keys %files) {
    if ($files{$file} == scalar(@extensions)) {
        print "$file\n";
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Shell脚本修改具有同一目录中多个文件的文件名的变量

查找文件,而同一目录中存在其他文件

根据项目要求替换同一目录中的文件名

Java将文件以相同的名称保存在同一目录中,但扩展名不同

在同一目录中制作单个文件的多个副本

在python中从同一目录修改多个.csv文件

使用Gulp在同一目录中的多个文件扩展名

通过SSH Bash脚本将文件复制到具有附加文件名的同一目录中

查找一个目录中存在的文件,而不是另一目录中的文件

递归“查找”文件名,该文件名包含另一个目录中的字符串和符号链接文件

如何查找Linux中同一目录中存在相同名称但不同情况的重复文件?

Eclipse可以找到文件,但是Exe文件无法找到,尽管该文件位于同一目录中,

同时将文件上传到同一目录

如何在同一目录中的Pod之间共享单个可写文件,并且该文件不可共享(可写configmap)

不同的进程可以在同一目录中同时创建不同的文件吗?

将文件复制到同一目录中的多个子目录

如何将多个目录下的文件移动到同一目录中?

读取与JavaScript文件位于同一目录中的文件

对同一目录下的多个文件应用相同的代码

在Python中同一目录中的多个文件进行循环

如何使用 Powershell 压缩 SQL Server 备份文件并保存在同一目录中?

将vim语法文件与文档保存在同一目录中

使用mogrify转换(压缩)JPEG图像,将原始文件保存在同一目录中

无法导入存在于同一目录中的文件

解析 xml - 在同一目录中按文件名将拆分的 xml 文件加入 1 个 Pandas 数据帧

如何从缩略图链接到全尺寸图像?同一目录,不同文件名

使用package.json脚本在同一目录中复制多个文件?

Linux Bash:将多个不同的文件移动到同一目录中

在同一目录中创建文件的副本