gpt4 book ai didi

bash - 从当前目录获取文件并在同一行打印具有相同扩展名的文件

转载 作者:行者123 更新时间:2023-11-29 09:42:24 25 4
gpt4 key购买 nike

该脚本应列出当前目录文件并按后缀划分(并在没有后缀的情况下结束列表)。

示例(也称为“.extension:”)

.c: first.c main.c var.c
.h: const.h first.h
.odt: relazione.odt
makefile README COPYING

我正在尝试使用 ls、sort、uniq,但我做不到。有人可以帮助我吗?

我用python写了一个解决方案:

#!/usr/bin/env python3
import os

dictionary={}

for dirpath,_,files in os.walk("./"):
for f in files:
path = os.path.abspath(os.path.join(dirpath, f))
_ , ext = os.path.splitext(path)
if ext not in dictionary:
dictionary[ext] = []
dictionary[ext].append(f)

for k in dictionary:
if k != "":
print(k, end=": ")
for i in dictionary.get(k):
print(i, end= " ")
print("")

for i in dictionary.get(""):
print(i, end= " ")
print("")

最佳答案

可以使用 Perl。

use warnings;
use strict;

die "Too many args. Please supply one directory\n" if @ARGV > 1;
die "Too few args. Please supply one directory\n" if @ARGV < 1;

opendir (my $dir, "$ARGV[0]") || die "$ARGV[0]: $!\n" ;
my %extfiles;
my @Others;
while (my $file = readdir $dir){
next if (-d "./$file");
if($file =~ /^..*(\.[^\.]*)$/){
$extfiles{$1}=$extfiles{$1}?"$extfiles{$1} $file":"$file"
}
else{
push @Others,$file
}
}
closedir $dir;

#print "Files with extensions\n\n";
for my $extension (keys %extfiles){
print "$extension: $extfiles{$extension}\n";
}

#print "\nFiles without extensions\n\n";

print join (" ",@Others),"\n";

保存在文件中,例如

ListExt.pl

运行方式:

perl ListExt.pl $Dir

关于bash - 从当前目录获取文件并在同一行打印具有相同扩展名的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43725531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com