查找基名相同但扩展名不同的文件

Tim*_*Tim 6 filenames

在一个目录中,我们如何找到所有基本名称相同但扩展名不同的文件?例如0001.jpg0001.png0001.tiff,和0002.jpg0002.png

unx*_*nut 7

如果您想要所有唯一的文件名,请执行以下操作:

ls -1 | sed 's/\([^.]*\).*/\1/' | uniq
Run Code Online (Sandbox Code Playgroud)

如果您希望这些文件中有多个具有相同的基名,请使用:

ls -1 | sed 's/\([^.]*\).*/\1/' | uniq -c | sort -n | egrep -v "^ *\<1\>"
Run Code Online (Sandbox Code Playgroud)

对于具有多个句点的文件名,请使用以下内容:

ls -1 | sed 's/\(.*\)\..*/\1/' | uniq -c | sort -n | egrep -v "^ *\<1\>"
Run Code Online (Sandbox Code Playgroud)


Gil*_*not 4

的解决方案(我避免解析ls输出,它不是为此任务设计的,可能会导致错误):

perl -E '
    while (<*>){
        ($full, $short) = (m/^((.*?)\..*)$/);
        next unless $short;
        push @{ $h->{$short} }, $full;
    }
    for $key (keys %$h) {
        say join " ", @{ $h->{$key} } if @{ $h->{$key} } > 1;
    }
' /home/sputnick
Run Code Online (Sandbox Code Playgroud)

替换/home/sputnick.或任何您想要的目录;)