提取终端中最大的文件

时间:2017-10-12 01:43:55

标签: bash shell terminal

我有一个 100,000 图像的文件夹。此文件夹由 1000 图像组成,每个图像具有 100 每个图像的变体。每个变体都有不同的文件大小和随机后缀。例如:

image-of-a-cat-1a.jpg (50Kb)
image-of-a-cat-6b.jpg (100Kb)
image-of-a-cat-3f.jpg (75Kb)
image-of-a-cat-8d.jpg (25Kb)
and so on

我有 500 这些文件名的 500 列表,但我的列表中没有随机后缀或'.jpg ”。例如:

image-of-a-cat
image-of-a-dog
image-of-a-bird
and so on

是否可以:

  1. 仅搜索我想要的500的图像变体。 (我们可以删除其他人或将 500 移动到新文件夹)
  2. 查找具有最大文件大小的每个文件名的变体并删除后缀。 (我们可以删除其他人或将 500 移动到新文件夹)
  3. 例如:

    image-of-a-cat.jpg (100Kb)
    image-of-a-dog.jpg (100Kb)
    image-of-a-bird.jpg (100Kb)
    and so on
    

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的请求,并且您的系统符合POSIX标准,则以下代码将起作用:

#!/bin/bash

mkdir choicest
while read line; do
    mkdir $line
    mv ${line}-*.jpg $line

    cd $line
    ls -l | sort -k 4 -r | head -n 1 | awk '{org=$9; sub(/-[^-]*\./, ".", $9); print org " ../choicest/"$9}' | xargs mv
    cd ..
done < listofnames

文件&#34; listofnames&#34;包含500个名字。