删除文件扩展名后,对文件进行排序并获取唯一的文件



我正在尝试删除第二个下划线后的文件名,并获得唯一的文件。我看到了许多答案,并形成了一个脚本。此脚本在执行cut命令之前运行良好,但无法提供唯一的文件名。我尝试了以下命令,但没有得到所需的输出。

使用的脚本:

for filename in ${path/to/files}/*.gz; 
do
fname=$(basename ${filename} | cut -f 1-2 -d "_" | sort | uniq)
echo "${fname}"
done

文件示例:

  1. 文件名1_00_1.gz
  2. 文件名1_00_2.gz
  3. 文件名2_00_1.gz
  4. 文件名2_00_2.gz

所需输出:

  1. 文件名1_00
  2. 文件名2_00

这么说。如何获得所需输出格式的唯一文件列表?提前非常感谢。

打印完文件后应用uniqsort(最好先识别uniques,然后再排序(:

for filename in ${path/to/files}/*.gz;
do
fname=$(basename ${filename} | cut -f 1-2 -d "_" );
echo "${fname}";
done | uniq | sort

或者只做

for filename in ${path/to/files}/*.gz; do echo ${filename%_*.gz}; done | uniq | sort
for f in *.gz; do echo ${f%_*.gz}; done | sort | uniq

相关内容

  • 没有找到相关文章

最新更新