在一个目录中,我们如何找到所有基本名称相同但扩展名不同的文件?例如0001.jpg
和0001.png
和0001.tiff
,和0002.jpg
和0002.png
。
如果您想要所有唯一的文件名,请执行以下操作:
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)
使用perl的解决方案(我避免解析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
为.
或任何您想要的目录;)
归档时间: |
|
查看次数: |
1595 次 |
最近记录: |